dSb*_*dSb 20 python matplotlib
我正在绘制两个时间序列并为它们计算各种指数.
如何使用annotation或text在python中为这些图以外的图绘制这些索引?
以下是我的代码
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()
Run Code Online (Sandbox Code Playgroud)
我想teststr在情节之外打印.这是当前的情节:

Imp*_*est 48
最好定义图坐标中的位置而不是数据坐标,因为您可能不希望文本在更改数据时更改其位置.
使用图形坐标可以通过指定图形变换(fig.transFigure)来完成
plt.text(0.02, 0.5, textstr, fontsize=14, transform=plt.gcf().transFigure)
Run Code Online (Sandbox Code Playgroud)
或者使用图中的text方法代替轴的方法.
plt.gcf().text(0.02, 0.5, textstr, fontsize=14)
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,放置文本的坐标都在图形坐标中,其中(0,0)左下角(1,1)是图的右上角.
最后,您仍然可能希望为文本提供一些额外的空间以适应轴,使用plt.subplots_adjust(left=0.3)左右.
看起来文本在那里,但它位于图形边界之外。使用subplots_adjust()以腾出空间给文本:
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35192 次 |
| 最近记录: |