codexpga-scission-and-fragment-loss.py
pga-scission-and-fragment-loss.py
"""Original repeat-unit bookkeeping model; run from _media to write PNG there."""
from pathlib import Path
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
labels=['Initial','After cuts','After short\nfragments leave']
units=np.array([1_000_000,1_000_000,980_000])
chains=np.array([1_000,10_000,8_000])
dp=units/chains
fraction=units/units[0]
fig,axes=plt.subplots(1,2,figsize=(8,3.4),dpi=120,layout='constrained')
fig.patch.set_facecolor('white')
fig.suptitle('Chain cuts and fragment loss measure different changes',fontsize=12)
colors=['#2463a6','#bd702b','#34835c']
for ax,data,title,ylim in zip(axes,[dp,fraction],['Number-average repeat units per chain','Retained repeat-unit mass fraction'],[(0,1180),(0,1.2)]):
bars=ax.bar(np.arange(3),data,color=colors,width=.58)
ax.set(xticks=np.arange(3),xticklabels=labels,title=title,ylim=ylim)
ax.tick_params(axis='x',labelsize=9)
for bar,v in zip(bars,data):
text=f'{v:g}' if ax is axes[0] else f'{v:.0%}'
ax.annotate(text,(bar.get_x()+bar.get_width()/2,v),xytext=(0,5),textcoords='offset points',ha='center',fontsize=10)
ax.spines[['top','right']].set_visible(False)
ax.grid(axis='y',alpha=.2);ax.set_axisbelow(True)
fig.savefig(Path('pga-scission-and-fragment-loss.png'),facecolor='white')