凡例をmatplotlibプロットに追加するには、単にを実行しlegend()
ます。
凡例をプロットから削除する方法は?
(私がこれに最も近づいたのはlegend([])
、データから凡例を空にするために実行することです。ただし、右上隅に醜い白い長方形が残ります。)
凡例をmatplotlibプロットに追加するには、単にを実行しlegend()
ます。
凡例をプロットから削除する方法は?
(私がこれに最も近づいたのはlegend([])
、データから凡例を空にするために実行することです。ただし、右上隅に醜い白い長方形が残ります。)
回答:
以下のようmatplotlibのv1.4.0rc4
、remove
方法は、凡例オブジェクトに追加されています。
使用法:
ax.get_legend().remove()
または
legend = ax.legend(...)
...
legend.remove()
これが導入されたコミットについては、こちらを参照してください。
次のコード行を追加する必要があります。
ax = gca()
ax.legend_ = None
draw()
gca()は現在のAxesハンドルを返し、そのプロパティlegend_を持っています
draw()
でshow()
。それとも使用に特別な利点がありdraw
ますか?
show()
グラフの更新がプログラムの最後のコマンドである場合は問題ありません。 draw()
一般的なグラフ更新コマンドなので問題ありません。たとえば、グラフを更新した後、ターミナルでユーザーに入力を求めることができます。これは、ブロッキングでは実行できませんshow()
。
draw
がより適切であることに同意します(ただし、常にshow
グラフの更新に使用しています...)。
凡例を、軸ではなく図に追加して作成しました(matplotlib 2.2.2)。それを削除するにlegends
は、Figure の属性を空のリストに設定します。
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twinx()
ax1.plot(range(10), range(10, 20), label='line 1')
ax2.plot(range(10), range(30, 20, -1), label='line 2')
fig.legend()
fig.legends = []
plt.show()
@naitsirhcからの情報によると、私は公式のAPIドキュメントを見つけたかったのです。これが私の発見とサンプルコードです。
matplotlib.Axes
オブジェクトを作成しましたseaborn.scatterplot()
。ax.get_legend()
戻りますmatplotlib.legned.Legend
インスタンスを。.remove()
関数を呼び出して、凡例をプロットから削除します。ax = sns.scatterplot(......)
_lg = ax.get_legend()
_lg.remove()
matplotlib.legned.Legend
APIドキュメントを確認すると、.remove()
関数は表示されません。
その理由は、がをmatplotlib.legned.Legend
継承したためですmatplotlib.artist.Artist
。したがって、呼び出すときはax.get_legend().remove()
基本的にを呼び出しますmatplotlib.artist.Artist.remove()
。
最後に、コードを2行に簡略化することもできます。
ax = sns.scatterplot(......)
ax.get_legend().remove()
ax.get_legend().remove()
私の場合は解決策が機能しませんでしたが、2番目の解決策(legend = ax.legend() ... legend.remove()
)は機能しました。たぶん私の場合ax
だったのでAxesSubplot
?