python - Matplotlib 动画子图
问题描述
我正在尝试创建 matplotlib 子图,这些子图会随着实时数据的进入(在 tkinter python 应用程序的更大框架内)进行动画处理。我能够使动画功能在正常绘图上正常工作,但是当我修改子图的代码时,行为变得奇怪——大量的窗口会立即打开,只填充一个子图。
def showAnimatedValues():
ani = FuncAnimation(plt.gcf(), animate, 2000)
plt.show()
def animate(self,analyzed=False):
alldates = []
alldata=[]
for device_data in fetched:
data=[]
dates=[]
for tup in device_data:
if analyzed:
global device
device=str(tup[0])
data.append(data_analysis(float(tup[1])))
else:
data.append(float(tup[1]))
date=tup[2]
formatted_date=reverse_formatter(date)
formatted_date-=timedelta(hours=4)
dates.append(str(formatted_date))
alldates.append(dates)
alldata.append(data)
if len(alldates)>1:
plt.cla()
fig, axs = plt.subplots(len(alldates),squeeze=True)
fig.suptitle('Raw Live Current Data for Selected Devices')
for i in range(len(alldates)):
axs[i].plot(alldates[i],alldata[i])
axs[i].get_xaxis().set_visible(False)
axs[i].set_title(str(devices[i]))
else:
plt.cla()
plt.plot(alldates[0],alldata[0])
plt.title('Raw Live Current Data for Selected Device')
plt.title(str(devices[0]), loc='right')
plt.gca().axes.get_xaxis().set_visible(False)
button1 = tk.Button(text='Fetch Data ', command=getValues)
button2 = tk.Button(text='Plot Raw Data ', command=showValues)
button3 = tk.Button(text='Plot Analyzed Data ', command=showAnalyzedValues)
button4 = tk.Button(text='Plot Live Raw Data ', command=showAnimatedValues)
button5 = tk.Button(text='Plot Live Analyzed Data ', command=showAnimatedAnalyzedValues)
canvas1.create_window(300, 180, window=button1)
canvas1.create_window(400, 180, window=button2)
canvas1.create_window(520, 180, window=button3)
canvas1.create_window(645, 180, window=button4)
canvas1.create_window(780, 180, window=button5)
解决方案
推荐阅读
- ios - Xcode 11.4 未生成自定义意图类
- uwp - 现代应用程序的注册表功能
- python-3.x - 将 create_api.sh 移植到 python 脚本
- delphi - 自定义组件中的持久二进制数据
- linux - Docker 安装在 linux 中失败并出现错误 [Errno 14] HTTPS 错误 404 - 未找到
- python - 正在测试的模型名在 Django 中未定义错误
- reactjs - 输入缺少对每个更改的关注
- redis - Redis,实时用例
- apache-nifi - 在nifi jolt中将字符串拆分为数组
- python - replace() 不接受关键字参数