How can I remove points from a matplotlib plot before plotting a new one?

China☆狼群 提交于 2020-01-16 04:12:08

问题


I am trying to plot a point whose position is controlled by a slider. However, each time the slider is moved a new point is plotted without deleting the old one. How do you remove the old point before the new one is plotted?

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:


You can change the properties of 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()


来源:https://stackoverflow.com/questions/24921234/how-can-i-remove-points-from-a-matplotlib-plot-before-plotting-a-new-one

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!