2017-11-29 21 views
2

Pythonのプロットに%記号を印刷する方法はありますか?matplotlibをTextオブジェクトまたはLegend内で使用しますか?matplotlibの "%"記号Python

この基本的な例では、生のパーセント記号なしで、期待通りに動作します。テキストが言うその場合

plt.figure() 
TotEne,= plt.plot_date(time, ETTG['output'], 'b-', label='Total Energy') 
UsEne,= plt.plot_date(time, EUUG['output'], 'r-',label='Used Energy') 
plt.ylabel('kWh') 
plt.text('2015-12-15',25000,'Energy Losses=%.2f'%pEW, clip_on=True) 
plt.legend(handles=[TotEne,UsEne]) 
plt.show() 

「エネルギー損失を=」。しかし、 "Energy Losses =%"や "%Energy Losses ="を表示する方法があるのだろうかと思います。

これを実行しようとすると、TypeErrorが発生します。文字通り "%"文字を表示したいだけです。だから、これを行う:

plt.figure() 
TotEne,= plt.plot_date(time, ETTG['output'], 'b-', label='Total Energy') 
UsEne,= plt.plot_date(time, EUUG['output'], 'r-',label='Used Energy') 
plt.ylabel('kWh') 
plt.text('2015-12-15',25000,'%Energy Losses=%.2f'%pEW, clip_on=True) 
plt.legend(handles=[TotEne,UsEne]) 
plt.show() 

は、このエラーを発生させます:

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-559-9d13c78a6754> in <module>() 
    20 plt.ylabel('kWh') 
    21 
---> 22 plt.text('2015-12-15',25000,'%Energy Losses=%.2f'%pEW, clip_on=True) 
    23 
    24 plt.legend(handles=[TotEne,UsEne]) 

TypeError: not enough arguments for format string 

にはどうすれば%演算子を使用して補間された文字列でmatplotlibの図にリテラルパーセント記号(「%」)を含んでいますか?

答えて

2

%を印刷するには、"%%"を使用して「エスケープ」する必要があります。私は `「{:.2f}エネルギー損失=%」を使用して含まれるであろう

plt.text('2015-12-15',25000,'%%Energy Losses=%.2f'%pEW, clip_on=True) 
+1

:にあなたのコードを変更します。フォーマット(PEW)'別の潜在的な解決策として –

+0

うん、新しいスタイルが読みはるかに簡単でなければなりません。 –

+0

ありがとうございます!これは完全に機能します。 –

関連する問題