如何在绘制新图之前从matplotlib图中删除点?

时间:2014-07-23 21:21:21

标签: python matplotlib plot slider

我试图绘制一个位置由滑块控制的点。但是,每次移动滑块时,都会绘制一个新点而不删除旧点。如何在绘制新点之前删除旧点?

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import pyplot
from matplotlib import pyplot as plt
from matplotlib.widgets import Slider

def on_change(val):
    point=ax.scatter(x[int(val)/1],y[int(val)/1],z[int(val)/1])

x=[0,0.5,1]
y=[0,0.5,1]
z=[0,0.5,1]
p=0
fig = pyplot.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot([0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,0],[0,1,1,0,0,0,0,0,1,1,0,0,1,1,1,1],[0,0,1,1,0,0,1,1,1,1,1,0,0,1,0,0],c='black',zorder=10)
point=ax.scatter(x[p],y[p],z[p],zorder=0)
ax.set_xlabel('Width')
ax.set_ylabel('Depth')
ax.set_zlabel('Height')
slider_ax = plt.axes([0.15, 0.05, 0.7, 0.02])
slider = Slider(slider_ax, "min", 0, 2, valinit=1, color='blue')
slider.on_changed(on_change)
pyplot.show()

1 个答案:

答案 0 :(得分:1)

您可以更改point的属性:

def on_change(val):
    point.set_offsets([x[int(val) / 1], y[int(val) / 1]])
    point.set_3d_properties([z[int(val) / 1]], "z")
    fig.canvas.draw()