4

これが私が意味することの例です:

import matplotlib.pyplot as plt

xdata = [5, 10, 15, 20, 25, 30, 35, 40]
ydata = [1, 3, 5, 7, 9, 11, 13, 15]
yerr_dat = 0.5

plt.figure()

plt.plot(xdata, ydata, 'go--', label='Data', zorder=1)

plt.errorbar(xdata, ydata, yerr = yerr_dat, zorder=2, fmt='ko')

plt.legend()

plt.show()

これはこれをプロットします:

ここに画像の説明を入力

凡例にエラー ポイントとNoneラベルが表示されないようにするにはどうすればよいですか?

バージョン 1.0.1.1190 のCanopyを使用しています。


編集

このコードでジョーのソリューションを試した後:

import matplotlib.pyplot as plt

xdata = [5, 10, 15, 20, 25, 30, 35, 40]
ydata = [1, 3, 5, 7, 9, 11, 13, 15]
yerr_dat = 0.5
value = 20

plt.figure()

scatt = plt.plot(xdata, ydata, 'go--', label='Data', zorder=1)
hline = plt.hlines(y=5, xmin=0, xmax=40)
vline = plt.vlines(x=20, ymin=0, ymax=15)

plt.errorbar(xdata, ydata, yerr = yerr_dat, zorder=2, fmt='ko')

plt.legend([scatt, vline, hline], ['Data', 'Horiz line', 'Verti line = %d' % value], fontsize=12)

plt.show()

次の警告が表示されます。

/home/gabriel/Canopy/appdata/canopy-1.0.0.1160.rh5-x86/lib/python2.7/site-packages/matplotlib/legend.py:628: UserWarning: Legend does not support [<matplotlib.lines.Line2D object at 0xa09a28c>]
Use proxy artist instead.

http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist

  (str(orig_handle),))

そしてこの出力:

プロット2

何らかの理由で最初のラベルが表示されない場所。アイデア?


編集 2

次の行にコンマがありませんでした。

scatt, = plt.plot(xdata, ydata, 'go--', label='Data', zorder=1)

それを追加した後、すべてが魅力のように機能しました。ありがとうジョー!

4

1 に答える 1

5

matplotlib の新しいバージョンでは、必要なのはデフォルトの動作です。明示的に割り当てられたラベルを持つアーティストのみが凡例に表示されます。

ただし、凡例に表示される内容は簡単に制御できます。ラベルを付けたいアーティストだけを渡すだけです:

import matplotlib.pyplot as plt

xdata = [5, 10, 15, 20, 25, 30, 35, 40]
ydata = [1, 3, 5, 7, 9, 11, 13, 15]
yerr_dat = 0.5

plt.figure()

dens = plt.plot(xdata, ydata, 'go--', zorder=1)

plt.errorbar(xdata, ydata, yerr = yerr_dat, zorder=2, fmt='ko')

plt.legend(dens, ['Density Profile'])

plt.show()

ここに画像の説明を入力

label='_nolegend_'または、プロットを指定することもできますerrorbarが、matplotlib のどのバージョンがそれをサポートしているかはわかりません。アーティストとラベルの明示的なリストを渡すと、どのバージョンでも機能します。

他のアーティストを追加したい場合:

import matplotlib.pyplot as plt

xdata = [5, 10, 15, 20, 25, 30, 35, 40]
ydata = [1, 3, 5, 7, 9, 11, 13, 15]
yerr_dat = 0.5

plt.figure()

# Note the comma! We're unpacking the tuple that `plot` returns...
dens, = plt.plot(xdata, ydata, 'go--', zorder=1)
hline = plt.axhline(5)

plt.errorbar(xdata, ydata, yerr = yerr_dat, zorder=2, fmt='ko')

plt.legend([dens, hline], ['Density Profile', 'Ceiling'], loc='upper left')

plt.show()

ここに画像の説明を入力

于 2013-06-07T17:09:46.083 に答える