我正在绘制两个时间序列,并为它们计算不同的指数。
如何在python中使用annotation
或text
为图外的这些图编写这些索引?
下面是我的代码
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()
我想在图外打印teststr
。下面是当前图:
4条答案
按热度按时间2w2cym1i1#
最好用图形坐标而不是数据坐标来定义位置,因为您可能不希望文本在更改数据时更改其位置。
使用地物坐标可以通过指定地物变换(
fig.transFigure
)或者通过使用图中的
text
方法代替轴的方法。在这两种情况下,放置文本的坐标都是图形坐标,其中
(0,0)
是图形的左下角,(1,1)
是图形的右上角。最后,您可能仍然希望为文本提供一些额外的空间,以适应轴的旁边,使用
plt.subplots_adjust(left=0.3)
左右。sycxhyv72#
看起来文本在那里,但它位于图形边界之外。使用
subplots_adjust()
为文本腾出空间:twh00eeo3#
根据Matplotlib 3.3.4版文档,您可以使用figtext方法:
对你来说
它似乎给予与@ImportanceOfBeingErnest的answer之一相同的结果,即:
我已经在Matplobib 3.3.1版中使用了这两个命令。
sg24os4d4#
使用
bbox
如果你想让盒子在图的外面,并且在保存图的时候不被裁剪,你必须使用
bbox
。下面是一个最小的工作示例:更多详情:https://matplotlib.org/3.3.4/gallery/recipes/placing_text_boxes.html