gpt4 book ai didi

python - 使用 matplotlib 实时更新

转载 作者:太空狗 更新时间:2023-10-29 17:23:18 41 4
gpt4 key购买 nike

所以我有一些手机加速度计数据,我想基本上制作一个手机运动的视频。所以我使用 matplotlib 创建数据的 3D 图形:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import pandas as pd
import pickle
def pickleLoad(pickleFile):
pkl_file = open(pickleFile, 'rb')
data = pickle.load(pkl_file)
pkl_file.close()
return data
data = pickleLoad('/Users/ryansaxe/Desktop/kaggle_parkinsons/accelerometry/LILY_dataframe')
data = data.reset_index(drop=True)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
xs = data['x.mean']
ys = data['y.mean']
zs = data['z.mean']
ax.scatter(xs, ys, zs)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()

现在时间很重要,实际上也是一个因素,我一次只能看到一个点,因为时间也是一个因素,它让我可以看到加速度计数据的进展!

我可以用它做什么来使它成为一个实时更新的图表?

我唯一能想到的就是有一个逐行遍历并从行中生成图表的循环,但这将打开如此多的文件以至于它会很疯狂,因为我有数百万行。

那么我怎样才能创建实时更新图表呢?

最佳答案

这是一个尽可能快地更新的简单示例:

import pylab as plt
import numpy as np

X = np.linspace(0,2,1000)
Y = X**2 + np.random.random(X.shape)

plt.ion()
graph = plt.plot(X,Y)[0]

while True:
Y = X**2 + np.random.random(X.shape)
graph.set_ydata(Y)
plt.draw()

诀窍是不是继续创建新图表,因为这会继续消耗内存,而是更改现有绘图上的 x、y、z 数据。使用 .ion().draw() 设置 Canvas 以像这样更新。

附录:@Kelsey 在下方的高度评价评论指出:

You may need a plt.pause(0.01) after the plt.draw() line to get the refresh to show

关于python - 使用 matplotlib 实时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16446443/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com