【问题标题】:Matplotlib Slider does not update the scatter plotMatplotlib Slider 不更新散点图
【发布时间】:2021-10-21 21:11:24
【问题描述】:

所以我有一组(根据模型)随时间移动的点。有 2d 个列表 X 和 Y,其中每个列表的第 i 个元素也是一个包含各个点坐标的列表。

fig = plt.figure()
plt.subplots_adjust(bottom=0.2)
scat = plt.scatter(self.X[i], self.Y[i])

axslider = plt.axes([0.125, 0.1, 0.775, 0.05])
slider = Slider(ax=axslider, label='', valmin=1, valmax=n, valinit=1, valstep=1)
def update(val):
    i = int(slider.val)
    scat.set_offsets(self.X[i], self.Y[i])
    fig.canvas.draw_idle()
slider.on_changed(update)

plt.show()

每次切换滑块时,此代码都不会更新散点图。它执行并显示了数字,但是,解释器也显示错误:

TypeError: set_offsets() 接受 2 个位置参数,但给出了 3 个

有人看到我错过了什么吗?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    您错过了精美的文档

    >>> help(sc.set_offsets)
    Help on method set_offsets in module matplotlib.collections:
    
    set_offsets(offsets) method of matplotlib.collections.PathCollection instance
        Set the offsets for the collection.
        
        Parameters
        ----------
        offsets : (N, 2) or (2,) array-like
    

    这意味着您需要传递一个包含 N 行和 2 列的 SINGLE 数组(或列表),例如 [[x0, y0], [x1, y1], ..., [xn, yn]]

    您可以使用np.stack在此配置中排列您的数据

    scat.set_offsets(np.stack((self.X[i], self.Y[i]), axis=1)
    

    np.c_

    scat.set_offsets(np.c_[self.X[i], self.Y[i]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-01
      • 2016-06-19
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多