如何从图例(matplotlib)中删除错误栏?

时间:2015-03-28 19:26:06

标签: graph matplotlib legend

我在同一图表上绘制了4组数据,每组都有不同的y值,具体取决于某个变量P.在图例中,我最终得到8个不同的元素,4个用于每个不同的数据集,4个用于错误栏,如下所示:http://i.stack.imgur.com/9zOVm.png

代码的简化版本如下所示:

import matplotlib.pyplot as plt

plt.plot(x1, y1, c='b', marker='o', label='P=0', markersize=4)
plt.plot(x2, y2, c='g', marker='+', label='P=1', markersize=4)
plt.plot(x3, y3, c='r', marker='*', label='P=2', markersize=4)
plt.plot(x4, y4, c='k', marker='s', label='P=3', markersize=4)
plt.errorbar(x1, y1, yerr=yerr0, color='b')
plt.errorbar(x2, y2, yerr=yerr1, color='g')
plt.errorbar(x3, y3, yerr=yerr2, color='r')
plt.errorbar(x4, y4, yerr=yerr3, color='k')
plt.ylabel("Different y")
plt.xlabel("Different x")
plt.xlim(xmin=0, xmax=MaxX)
plt.suptitle("Different y vs Different x", fontsize=14, fontweight='bold')
plt.legend(loc='upper right', numpoints=1)
plt.show()

我只想要图例中数据的标记,如何删除错误栏的标记?

1 个答案:

答案 0 :(得分:0)

如果在创建变量时将行分配给变量,可以告诉.legend()显示哪些行:

line1, = plt.plot(x1, y1, c='b', marker='o', label='P=0', markersize=4)
line2, = ...
line3, = ...
line4, = ...

然后用以下方式绘制图例:

plt.legend((line1, line2, line3, line4), loc='upper right', numpoints=1)

要更改每行的标签,您还可以使用新标签传递元组:

plt.legend((line1, line2, line3, line4), ('label1', 'label2', 'label3', 'label4'), loc='upper right', numpoints=1)

希望这会给你想要的东西。