从图中删除错误栏和行

时间:2014-08-25 14:12:43

标签: python matplotlib

我想将三个图保存到文件中。在第一个文件中,应该包含所有三个图,在第二个文件中只包含两个图,在第三个图中只包含一个图。 我的想法如下:

import matplotlib.pyplot as plt
line1 = plt.plot([1,2,3],[1,2,3])
line2 = plt.plot([1,2,3],[1,6,18])
line3 = plt.plot([1,2,3],[1,1,2])
fig.savefig("testplot1.png")
line1[0].remove()
fig.savefig("testplot2.png")
line2[0].remove()
fig.savefig("testplot3.png")

现在,这很好用。问题是我想使用错误栏。所以我试过了:

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
line1=ax.errorbar([1,2,3],[1,2,3],yerr=[0.2,0.2,0.2])
line2=ax.errorbar([1,2,3],[1,6,18],yerr=[0.2,0.2,0.2])
line3=ax.errorbar([1,2,3],[1,1,2],yerr=[0.2,0.2,0.2])
fig.savefig("testplot1.png")
line1[0].remove()
fig.savefig("testplot2.png")
line2[0].remove()
fig.savefig("testplot3.png")

现在线条仍被移除,但错误栏仍然存在。我无法弄清楚如何删除错误栏的所有部分。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

ax.errorbar返回三件事:

  • 情节线(您的数据点)
  • 上限线(误差线的上限)
  • 条形线(显示错误条的条形线)

您需要将它们全部删除才能完全删除"删除"情节

import matplotlib.pyplot as plt

fig = plt.figure()

ax = fig.add_subplot(111)

line1=ax.errorbar([1,2,3],[1,2,3],yerr=[0.2,0.2,0.2])
line2=ax.errorbar([1,2,3],[1,6,18],yerr=[0.2,0.2,0.2])
line3=ax.errorbar([1,2,3],[1,1,2],yerr=[0.2,0.2,0.2])

fig.savefig("testplot1.png")

line1[0].remove()
for line in line1[1]:
    line.remove()
for line in line1[2]:
    line.remove()

fig.savefig("testplot2.png")

line2[0].remove()
for line in line2[1]:
    line.remove()
for line in line2[2]:
    line.remove()

fig.savefig("testplot3.png")

请注意,您必须迭代第二个和第三个参数,因为它们实际上是列出对象。