python - 通过 slider 更新绘图(python)

标签 python slider

我得到一个数据数组,看起来像 data = [[1, 2, 3], [4, 5, 6], [7, 9, 10]....] 和 x值x_values = np.arange(3)

我想一次显示一个子数组的图,并在图表中合并一个 slider ,其值应代表相应子数组的索引。因此,当我将 slider 从 1 更改为 2 时,它应该从绘制 data[1] 更改为针对我的 x 值绘制 data[2]

我的代码看起来像这样:

#Initial plot
fig, ax = plt.subplots()
i = 0
plt.subplots_adjust(bottom = 0.15)
ax.plot(x_values, data[i])

#Update function
def update_wave(val):
    i = int(sliderwave.val)

    x_values = np.arange(3)
    ax.cla()
    ax.plot(x_values, data[i))
    fig.canvas.draw_idle()

#Sliders
axwave = plt.axes([0.25, 0.05, 0.5, 0.03])
sliderwave = Slider(axwave, 'Event No.', 0, 100, valinit=0, valfmt='%1.0f')

update_wave(i)
sliderwave.on_changed(update_wave)

它不是那样工作的。我想有些事情是没有意义的。希望得到一些帮助。

最佳答案

我认为您在代码中只遗漏了一个小细节,并且您希望 slider 仅采用离散值。如果这是您想要实现的目标,请尝试以下代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider

# Define data set

DATA = np.random.uniform(1, 10, 300).reshape(-1, 3)
X_VALUES = np.arange(3)

# Initial plot

fig, ax = plt.subplots()
plt.subplots_adjust(bottom=0.15)
ax.plot(X_VALUES, DATA[0], '-o')

# Update function


def update_wave(val):
    idx = int(sliderwave.val)
    ax.cla()
    ax.plot(X_VALUES, DATA[idx], '-o')
    fig.canvas.draw_idle()


# Sliders

axwave = plt.axes([0.25, 0.05, 0.5, 0.03])

sliderwave = Slider(axwave, 'Event No.', 0, 100, valinit=0, valfmt='%d')
sliderwave.on_changed(update_wave)

plt.show()

在这个例子中,我生成了一个随机数据集来绘制。请注意,在 Slider 对象中,我设置了可选参数 valfmt='%d',因此 slider 仅采用整数值。

编辑

如果您想包含一个文本框来选择幻灯片编号,那么您将需要添加新的函数和对象,例如:

def submit(text):
    idx = int(text)
    ax.cla()
    ax.plot(X_VALUES, DATA[idx], '-o')
    fig.canvas.draw_idle()

axtext = plt.axes([0.25, 0.15, 0.5, 0.03])
text_box = TextBox(axtext, 'Slide No.')
text_box.on_submit(submit)

如果您希望它与之前定义的 slider 一起使用,那么您还必须使用 plt.subplots_adjust(bottom=0.25) 修改子图的形状。最终的情节如下所示: enter image description here

关于python - 通过 slider 更新绘图(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62425396/

相关文章:

javascript - jQuery 移动 slider

python - 通过选择具有特定值的条目将 python 3 字典列表分成两部分的最有效方法

python - 在 Python 中使用 Pefile 查找可执行文件的 DLL 的绝对路径

python - 如何在 python 中将数据框与分号合并?

jQuery - 动画/滑动到高度 : 100%

javascript - 基于javascript中宽度大小的不同背景src?

python - 标签不在[索引]中

python - 改变标题栏的颜色

具有非线性/指数/对数步长的 JQuery UI slider

WPF:如何使控件在 StackPanel 中拉伸(stretch)?