2017-02-24 12 views
6

私は2つの時系列をプロットしており、コンピューティングはそれらのインデックスを変えています。Pythonのプロットの外にテキストを置く方法は?

プロットの外側にあるこれらのプロットのインデックスを、annotationまたはtextを使ってPythonで書く方法はありますか?以下は

私はプロットの外teststrを印刷したい私のコード

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() 

です。

Here is the plot

files

答えて

0

テキストがあるが、それは数字境界の外側にあるように見えます。 使用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() 

enter image description here

+0

'subplots_adjust()'を使用した後でもテキストが表示されませんでした。 'xlim'と' ylim'を定義する必要はありますか? – dSb

+0

いいえ、私はあなたのデータなしで同じ軸の範囲を得るためにそれらを使用しました。私の例を実行すると、テキストが表示されますか? Matplotlibの異なるバージョンかもしれませんか?私はバージョン1.5.2を使用します(Python 3では、それは無関係です)。 'left'、' right'、 'top'、' bottom'といった異なる値で再生することもできます。おそらくテキストは別の場所にあるかもしれません。 – kazemakase

+0

上、左、下、右を試しましたが、テキストが見つかりませんでした。私はPython 2.7.11とmatplotlibバージョン1.5.1を使用しています。はい、私はあなたの例のテキストを見ることができます。ファイルを編集してアップロードしました。私のコードでそれらをチェックしてください。 – dSb

12

それは図の位置を定義するために、おそらく最善ですが座標の代わりに、あなたはおそらく、テキストがときにその位置を変更したくないだろうとして、データは座標データを変更する。図座標を用い

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

又は代わり軸との図のtext方法を用いて(fig.transFigure)のいずれかで行わ図形を指定して変換することができます。

両方の場合において
plt.gcf().text(0.02, 0.5, textstr, fontsize=14) 

テキストを配置する座標を左及び(1,1)は、図の右上にある(0,0)が下である図形座標、です。

最後に、plt.subplots_adjust(left=0.3)程度を使用して、テキストを軸の隣に収めるための余分なスペースを提供することができます。

関連する問題