How to put text outside python plots?

北城以北 提交于 2021-01-20 15:52:45

问题


I am plotting two time series and computing varies indices for them.

How to write these indices for these plots outside the plot using annotation or text in python?

Below is my code

import matplotlib.pyplot as plt

obs_graph=plt.plot(obs_df['cms'], '-r', label='Observed')
plt.legend(loc='best')
plt.hold(True)
sim_graph=plt.plot(sim_df['cms'], '-g', label="Simulated")
plt.legend(loc='best')
plt.ylabel('Daily Discharge (m^3/s)')
plt.xlabel('Year')
plt.title('Observed vs Simulated Daily Discharge')
textstr = 'NSE=%.2f\nRMSE=%.2f\n'%(NSE, RMSE)
# print textstr
plt.text(2000, 2000, textstr, fontsize=14)
plt.grid(True)
plt.show()

I want to print teststr outside the plots. Here is the current plot:

plot


回答1:


It's probably best to define the position in figure coordinates instead of data coordinates as you'd probably not want the text to change its position when changing the data.

Using figure coordinates can be done either by specifying the figure transform (fig.transFigure)

plt.text(0.02, 0.5, textstr, fontsize=14, transform=plt.gcf().transFigure)

or by using the text method of the figure instead of that of the axes.

plt.gcf().text(0.02, 0.5, textstr, fontsize=14)

In both cases the coordinates to place the text are in figure coordinates, where (0,0) is the bottom left and (1,1) is the top right of the figure.

At the end you still may want to provide some extra space for the text to fit next to the axes, using plt.subplots_adjust(left=0.3) or so.




回答2:


Looks like the text is there but it lies outside of the figure boundary. Use subplots_adjust() to make room for the text:

import matplotlib.pyplot as plt

textstr = 'NSE=%.2f\nRMSE=%.2f\n'%(1, 2)
plt.xlim(2002, 2008)
plt.ylim(0, 4500)
# print textstr
plt.text(2000, 2000, textstr, fontsize=14)
plt.grid(True)
plt.subplots_adjust(left=0.25)
plt.show()



来源:https://stackoverflow.com/questions/42435446/how-to-put-text-outside-python-plots

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!