从绘图绘图中删除先前绘制的内容

时间:2011-08-25 19:59:18

标签: python matplotlib

使用pyplot,我创建了一个数字并绘制了一些随机分散的(x,y)点。然后我想用线段连接这些点的一些子集。用户按下一个键后,我的程序需要删除先前绘制的一组线段(保留原始点),然后在另一组点之间绘制新的段。

我的问题是我不知道如何删除前面的线段。我尝试用背景颜色(白色)重新绘制它们,但这会留下线条所在的非白色像素残留。我在在线文档中找不到任何这样做的例子。是否可能,如果可能,怎么样?

2 个答案:

答案 0 :(得分:3)

Scipy有一个tutorial用于从轴中删除一条线。我在下面的例子中使用它,我认为它模仿你想要做的事情:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)
np.random.seed(101)
y = np.random.rand(10)

small = [i for i in range(len(x)) if y[i] < .5 ]
big = [i for i in range(len(x)) if y[i] > .5 ]

fig = plt.figure()
ax = fig.add_subplot(111)

ax.scatter(x,y)
# user wants to plot lines connecting big values (>.5)
ax.plot(x[big],y[big])

#plt.show()
# now user wants to delete the first (and only) line
del ax.lines[0]

# so that they can plot a line only showing small values
ax.plot(x[small],y[small])

plt.show()

答案 1 :(得分:0)

你不得不清理情节并重新绘制你的观点。命令为clf()

我刚才意识到我有点不对劲。查找artists概念,它允许您将某些绘制的对象定义为静态,将其他对象定义为动态。我已将它用于动画,但它也适用于此。这是一个tutorial