import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from mpl_ornaments.titles import set_title_and_subtitle

fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(5,6.5))

#1
df = pd.read_csv('data/ai-discovery-new-drugs.csv', comment='#')
likelihood_levels = ['Unlikely', 'Before 10 yr', 'After 10 yr']

#2
row_totals = df[likelihood_levels].sum(axis=1)
df[likelihood_levels] = 100*df[likelihood_levels].div(row_totals, axis=0)

#3
left = np.zeros(df['Knowledge'].nunique())

for likelihood_level in likelihood_levels:
    perceived_likelihood = df[likelihood_level]    
#4
    ax.barh(y=df['Knowledge'], width=perceived_likelihood, left=left, 
            label=likelihood_level) 
#5
    left = left + perceived_likelihood 

#6
ax.set_xlabel('% of replies')
ax.spines[['right', 'top']].set_visible(False)
ax.legend(ncols=len(likelihood_levels), bbox_to_anchor=(0.5, 1.0), 
          loc='center', frameon=False)
   
title = 'Will artificial intelligence help discover new cancer drugs?'
subtitle = 'By familiarity with the subject. Source: Cabral et al., '+\
    'Curr. Oncol., 2023.'
set_title_and_subtitle(fig=fig, title=title, subtitle=subtitle,
                       alignment='left', h_offset=-30)

fig.savefig('charts/hundred-percent-stacked-bar-chart.png', 
            bbox_inches='tight', dpi=300)