这是一个例子,说明我的意思:
我收到了这个警告:
例如:
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”标签,怎么去掉它们?
我正在使用Canopy 1.0.1.1190版本。
编辑
在尝试Joe的解决方案后,使用以下代码:
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
事实证明,我在这一行中缺少了一个逗号:
scatt, = plt.plot(xdata, ydata, 'go--', label='Data', zorder=1)
在添加之后一切都像魔术般地运作了。谢谢Joe!
Canopy
官网(https://www.enthought.com/products/canopy/package-index/)的说明,它使用的是`matplotlib` v1.2.0版本,因此这个问题可能已经在1.2.1版本中得到修复。 - GabrielLegend
类进行了重构。可能与此有关。 - Joe Kingtonscat, = plt.plot...
。即使只有一个艺术家,plot
始终返回一个元组。(这是由于plot
的重载功能,使其表现得像matlab的plot
)。这是一个常见的“陷阱”。 - Joe Kington