matplotlibフィギュアの凡例を削除する


169

凡例をmatplotlibプロットに追加するには、単にを実行しlegend()ます。

凡例をプロットから削除する方法は?

(私がこれに最も近づいたのはlegend([])、データから凡例を空にするために実行することです。ただし、右上隅に醜い白い長方形が残ります。)

回答:


229

以下のようmatplotlibのv1.4.0rc4remove方法は、凡例オブジェクトに追加されています。

使用法:

ax.get_legend().remove()

または

legend = ax.legend(...)
...
legend.remove()

これが導入されたコミットについては、こちらを参照してください。


2
何らかの理由で、ax.get_legend().remove()私の場合は解決策が機能しませんでしたが、2番目の解決策(legend = ax.legend() ... legend.remove())は機能しました。たぶん私の場合axだったのでAxesSubplot
jhin

@naitsirhc、ありがとうございます。
Andrew Li

91

Pandasデータフレームをプロットして凡例を削除したい場合は、パラメータとしてlegend = Noneをプロットコマンドに追加します。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df2 = pd.DataFrame(np.random.randn(10, 5))
df2.plot(legend=None)
plt.show()

86

凡例のset_visible方法を使用できます。

ax.legend().set_visible(False)
draw()

これは、以前にここで私が持っていた同様の質問に答えて私に提供された回答に基づいています

(その回答をありがとうJouni-質問に回答済みのマークを付けることができなかったのは残念です...おそらく、権限を持つ誰かが私のためにそうすることができますか?)


4
これは凡例を隠すだけで、実際にはオブジェクトを削除しませんよね?
vlsd 2013

16

次のコード行を追加する必要があります。

ax = gca()
ax.legend_ = None
draw()

gca()は現在のAxesハンドルを返し、そのプロパティlegend_を持っています


ありがとうございます。(しかし、どのような恐ろしいインターフェイス...)私は交換することをお勧めdraw()show()。それとも使用に特別な利点がありdrawますか?
Olivier Verdier、2011

show()グラフの更新がプログラムの最後のコマンドである場合は問題ありません。 draw()一般的なグラフ更新コマンドなので問題ありません。たとえば、グラフを更新した後、ターミナルでユーザーに入力を求めることができます。これは、ブロッキングでは実行できませんshow()
エリックOレビゴット2011

正しい。答えてくれてありがとう。私はこれdrawがより適切であることに同意します(ただし、常にshowグラフの更新に使用しています...)。
Olivier Verdier

6

figおよびaxプロットオブジェクトを使用していない場合は、次のように実行できます。

import matplotlib.pyplot as plt

# do plot specifics
plt.legend('')
plt.show()

3

あなたが呼ぶpyplotならplt

frameon=False 凡例の周りの境界線を削除することです

と ''は、凡例に変数があってはならないという情報を渡している

import matplotlib.pyplot as plt
plt.legend('',frameon=False)

1

凡例を、軸ではなく図に追加して作成しました(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()

0

@naitsirhcからの情報によると、私は公式のAPIドキュメントを見つけたかったのです。これが私の発見とサンプルコードです。

  1. matplotlib.Axesオブジェクトを作成しましたseaborn.scatterplot()
  2. ax.get_legend()戻りますmatplotlib.legned.Legendインスタンスを。
  3. 最後に、.remove()関数を呼び出して、凡例をプロットから削除します。
ax = sns.scatterplot(......)
_lg = ax.get_legend()
_lg.remove()

matplotlib.legned.LegendAPIドキュメントを確認すると、.remove()関数は表示されません。

その理由は、がをmatplotlib.legned.Legend継承したためですmatplotlib.artist.Artist。したがって、呼び出すときはax.get_legend().remove()基本的にを呼び出しますmatplotlib.artist.Artist.remove()

最後に、コードを2行に簡略化することもできます。

ax = sns.scatterplot(......)
ax.get_legend().remove()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.