Python Matplotlib:使用小部件以交互方式更改显示的图形
我有一个数据列表,例如{a_1,a_2,a_3,…},其中每个元素也是一个大的数据列表,例如a_I={p_I_1,p_I_2,…}Python Matplotlib:使用小部件以交互方式更改显示的图形,python,matplotlib,Python,Matplotlib,我有一个数据列表,例如{a_1,a_2,a_3,…},其中每个元素也是一个大的数据列表,例如a_I={p_I_1,p_I_2,…} 我想使用Matplotlib制作每个a_I的列表图,比如plot_a_I,然后使用一个功能在plot_a_I之间更改显示的图。因为每个A_i都很大,所以我不想每次都重新绘制,而是先绘制所有的图,然后使用Matplotlib的某种小部件更改显示的图。我脑子里想的是“操纵”数学。我如何才能做到这一点?下面是我如何使用Axes.set_visible()实现的。欢迎提出任
我想使用Matplotlib制作每个a_I的列表图,比如plot_a_I,然后使用一个功能在plot_a_I之间更改显示的图。因为每个A_i都很大,所以我不想每次都重新绘制,而是先绘制所有的图,然后使用Matplotlib的某种小部件更改显示的图。我脑子里想的是“操纵”数学。我如何才能做到这一点?下面是我如何使用Axes.set_visible()实现的。欢迎提出任何意见和/或建议
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
def f(t):
return np.exp(-t) * np.cos(2*np.pi*t)
class PlotList:
def __init__(self, plots):
self.cur_val = 0
self.plots = plots
self.plots[self.cur_val].set_visible(True)
def set_visible(self, val):
new_val = int(val)
if(self.cur_val != new_val):
self.plots[self.cur_val].set_visible(False)
self.plots[new_val].set_visible(True)
self.cur_val = new_val
fig.canvas.draw_idle()
t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)
fig = plt.figure()
plot_axes_rect = [0.125, 0.15, .8, 0.75]
plots = [fig.add_axes(plot_axes_rect, label=1, visible=False),
fig.add_axes(plot_axes_rect, label=2, visible=False)]
plots[0].plot(t1, f(t1), 'bo')
plots[1].plot(t2, f(t2), 'k')
pl = PlotList(plots)
theta_axes = fig.add_axes([0.125, 0.05, .8, 0.05])
theta_slider = Slider(theta_axes, 'theta', 0, 2,
valinit=pl.cur_val, valfmt='%d')
theta_slider.on_changed(pl.set_visible)
plt.show()