python 中带有滑块的散点图

Scatter plot with a slider in python

嘿,我正在尝试创建一个带有滑块的散点图,滑块会在我滑过时更新绘图。到目前为止,这是我的代码。它绘制了一个散点图和一个滑块,但当我移动它时,没有任何反应。我怀疑问题出在 .set_ydata 位上,但我似乎无法在 Internet 上找到其他解决方法。

import numpy as np 
from matplotlib.widgets import Slider
from pylab import plot, show, figure, scatter, axes, draw

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

x, y = np.random.rand(2,100)
scat = scatter(x,y)

axcolor = 'lightgoldenrodyellow'
axamp = axes([0.2, 0.01, 0.65, 0.03], axisbg=axcolor)

scorr = Slider(axamp, 'corr', -2,2, valinit=1)

def update(val):
    corr = scorr.val

    for i in range(len(x)):
        x[i]=x[i]+corr*np.random.randn()

    for i in range(len(y)):
        y[i]=y[i]+corr*np.random.randn()

    scat.set_xdata(x)
    scat.set_ydata(y)
    draw()

scorr.on_changed(update)

show(scat)

公平地说,这只是一个测试脚本。我必须用一个更复杂的脚本做同样的事情,但我意识到在一个更简单的问题上尝试它会更容易。我真的只关心 scat.set_ydata 以及放在那里的东西,这样它才能工作。

提前致谢。

您需要使用 set_offsetsset_array 来代替:

# make sure you get the right dimensions and direction of arrays here
xx = np.vstack ((x, y))
scat.set_offsets (xx.T)

# set colors
scat.set_array (y)

可能重复:How to animate a scatter plot?