Note
Go to the endto download the full example code.
Artist tests#
Test unit support with each of the Matplotlib primitive artist types.
The axis handles unit conversions and the artists keep a pointer to their axisparent. You must initialize the artists with the axis instance if you want touse them with unit data, or else they will not know how to convert the unitsto scalars.
This example requiresbasic_units.py

importrandomfrombasic_unitsimportcm,inchimportmatplotlib.pyplotaspltimportnumpyasnpimportmatplotlib.collectionsascollectionsimportmatplotlib.linesaslinesimportmatplotlib.patchesaspatchesimportmatplotlib.textastextfig,ax=plt.subplots()ax.xaxis.set_units(cm)ax.yaxis.set_units(cm)# Fixing random state for reproducibilitynp.random.seed(19680801)if0:# test a line collection# Not supported at present.verts=[]foriinrange(10):# a random line segment in inchesverts.append(zip(*inch*10*np.random.rand(2,random.randint(2,15))))lc=collections.LineCollection(verts,axes=ax)ax.add_collection(lc)# test a plain-ol-lineline=lines.Line2D([0*cm,1.5*cm],[0*cm,2.5*cm],lw=2,color='black',axes=ax)ax.add_line(line)if0:# test a patch# Not supported at present.rect=patches.Rectangle((1*cm,1*cm),width=5*cm,height=2*cm,alpha=0.2,axes=ax)ax.add_patch(rect)t=text.Text(3*cm,2.5*cm,'text label',ha='left',va='bottom',axes=ax)ax.add_artist(t)ax.set_xlim(-1*cm,10*cm)ax.set_ylim(-1*cm,10*cm)# ax.xaxis.set_units(inch)ax.grid(True)ax.set_title("Artists with units")plt.show()