Python Matplotlib滑块被绘制但不移动或更新

3 投票
1 回答
2612 浏览
提问于 2025-04-18 14:21

我正在尝试绘制一个散点图,图上有一个点的位置会根据滑块调整的参数而移动。这个参数需要是坐标列表中的一个位置。我已经能绘制出散点图,并且可以手动通过改变位置来移动这个点,但当我尝试实现滑块时,滑块虽然显示出来了,但无法拖动来更新图表。如果有人能帮忙就太好了。以下是我目前的代码。谢谢。

%pylab
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import animation

def on_change(val):
   p=int(val)/1

def chart():
    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)
    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')
    pyplot.show()

chart()

1 个回答

3

你需要保留一个对Slider对象的引用,否则它(以及它的回调函数)会被垃圾回收机制清理掉。详细讨论可以查看这个链接:https://github.com/matplotlib/matplotlib/issues/3105

关于这个问题的文档在1.4版本中已经做了更清晰的说明。

撰写回答