15

matplotlib で作成された凡例を含む単純なプロットでは、次のようになります。凡例のラベルの左側にあるマーカーが 2 回表示されます。誰でも問題を回避する理由と方法を知ることができますか? 私のコマンドは次のとおりです。

pl.plot(x1,x2,'g^', label='regional')
pl.plot(y1,y2,'bo', label='local')
pl.legend( loc='upper left' )

ありがとうございました

4

1 に答える 1

32

numpoints次のキーワードを使用して、凡例に表示されるマーカーの数を変更できます。

import matplotlib.pyplot as plt
import numpy as np
x1 = y1 = np.linspace(0, 10, 100)
x2 = np.sin(x1)
y2 = np.cos(y1)
plt.plot(x1,x2,'g--^', label='regional')
plt.plot(y1,y2,'b-o', label='local')
plt.legend( loc='upper left', numpoints = 1 )
plt.show()

ここに画像の説明を入力


マーカーが (デフォルトで) 2 回表示される理由は、matplotlib がマーカー間の線スタイル コネクタを表示しようとしているからだと思います。コネクタが無いとちょっと変な感じです。

プロットに実線と破線がある場合、

plt.plot(x1,x2,'g--^', label='regional')
plt.plot(y1,y2,'b-o', label='local')

凡例は次のようになります。

ここに画像の説明を入力

これで、凡例 (およびグラフ) のマーカー間の線スタイルの効果を確認できます。


凡例ハンドルがまったく必要ない場合は、次を使用できます

plt.legend(..., handlelength=0)

例えば、

import numpy as np
import matplotlib.pyplot as plt

x1 = y1 = np.linspace(0, 10, 100)
x2 = np.sin(x1)
y2 = np.cos(y1)
plt.plot(x1,x2,'g--^', label='regional')
plt.plot(y1,y2,'b-o', label='local')
plt.legend(loc='best', numpoints=1, handlelength=0)
plt.show()

ここに画像の説明を入力

あなたが使用することができます

plt.legend(loc='best', numpoints=1, handlelength=0, 
           markerscale=0, handletextpad=0)

凡例マーカーも削除します。

于 2012-10-04T17:44:49.107 に答える