1

I would like to add some annotations on a figure with multiple subplots...On the figure below i would like to write something below the 2 right figures and at the left top. How can i do that?

I try with : ax3.text(0.1, 0.5, '$\sigma =$' resV.mean(), size=12, ha='center', va='center')

But that doesnt work, i would like to specify mean and standard deviation of the right plots

enter image description here

You can see a part of my code :

plt.close()
fig, axes = plt.subplots(nrows=2, ncols=3)

###Figures composante X
plt.tight_layout(pad=0.05, w_pad=0.001, h_pad=2.0)
ax1 = plt.subplot(231) # creates first axis
ax1.set_xticks([0,2000,500,1000,1500])
ax1.set_yticks([0,2000,500,1000,1500])
ax1.tick_params(labelsize=8) 
i1 = ax1.imshow(U,cmap='hot',extent=(X.min(),2000,Y.min(),2000), vmin=U.min(), vmax=U.max())
cb1=plt.colorbar(i1,ax=ax1,ticks=[U.min(),(U.min()+U.max())/2., U.max()],fraction=0.046, pad=0.04,format='%.2f')
cb1.ax.tick_params(labelsize=8)

ax1.set_title("$ \mathrm{Ux_{mes} \/ (pix)}$", y=1.05, fontsize=12)
ax2 = plt.subplot(232) # creates second axis
ax2.set_xticks([0,2000,500,1000,1500])
ax2.set_yticks([0,2000,500,1000,1500])
i2=ax2.imshow(UU,cmap='hot',extent=(X.min(),2000,Y.min(),2000), vmin=UU.min(), vmax=UU.max())
ax2.set_title("$\mathrm{Ux_{cal} \/ (pix)}$", y=1.05, fontsize=12)
ax2.set_xticklabels([])
ax2.set_yticklabels([])
cb2=plt.colorbar(i2,ax=ax2,fraction=0.046, pad=0.04,ticks=[UU.min(),(UU.min()+UU.max())/2.,UU.max()],format='%.2f')
cb2.ax.tick_params(labelsize=8)

ax3 = plt.subplot(233) # creates first axis
ax3.set_xticks([0,2000,500,1000,1500])
ax3.set_yticks([0,2000,500,1000,1500])
i3 = ax3.imshow(resU,cmap='hot',extent=(X.min(),2000,Y.min(),2000),vmin=0.,vmax=0.1)
ax3.imshow(scipy.ndimage.filters.gaussian_filter(masquey2, 3),cmap='hot',alpha=0.2,extent=(X.min(),2000,Y.min(),2000))
ax3.set_title("$\mathrm{\mid \/ Ux_{mes} - Ux_{cal}\mid \/ (pix)}$ ", y=1.05, fontsize=12)
cb3=plt.colorbar(i3,ax=ax3,fraction=0.046, pad=0.04,ticks=[0.,0.1],format='%.2f')
ax3.set_xticklabels([])
ax3.set_yticklabels([])
cb3.ax.tick_params(labelsize=8)
plt.gcf().tight_layout()
1
  • 1
    I understand i have to use : ax3.text(0.1, 0.5, '$\sigma =$') & ax3.text(0.1, 0.5, resV.mean())! But i dont know how to modify the number of significant digits... Commented Jun 7, 2015 at 12:02

3 Answers 3

2

Something like this should work alright given that 1,5 is the position you really want the text to appear:

ax3.text(1, 5, 'sigma = {0}'.format(resV.mean()), size=12, ha='center', va='center')
Sign up to request clarification or add additional context in comments.

Comments

1

Q: But i dont know how to modify the number of significant digits.

A: Pre-process the value to be displayed round( 1.234567890123456e-2, 5 )

Comments

1

You can do this at format-time using the format string syntax

In [23]: 'sigma = {0:.5}'.format(np.pi)
Out[23]: 'sigma = 3.1416'

In [24]: 'sigma = {0:.3}'.format(np.pi)
Out[24]: 'sigma = 3.14'

In [25]: 'sigma = {0:.13}'.format(np.pi)
Out[25]: 'sigma = 3.14159265359'

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.