我想在 Python 3 项目中显示股票价格和平均值的时间序列数据。
数据当前存储在一个定期更新的 CSV 文件中,我的解释器是 Anaconda。
我试过使用
Matplotlib.animation.FuncAnimation()
然而,图形窗口弹出没有任何轴,然后无法响应并 crashe。
这是我在项目中的图表类:
class Chart:
import matplotlib.pyplot
import matplotlib.animation as animation
plt = matplotlib.pyplot
@classmethod
def __init__(cls):
fig = cls.plt.figure(figsize=(5, 5))
global ax1
ax1 = fig.add_subplot(1, 1, 1)
ani = cls.animation.FuncAnimation(fig, cls.animate, interval=1000, blit=True)
cls.plt.show()
@classmethod
def animate(cls, i):
xs = []
ys = []
ax1.clear()
data = pd.read_csv('chart_values.csv')
date = data['timestamp']
last = data['last']
short_ma = data['short_ma']
long_ma = data['long_ma']
xs.append(date)
ys.append(last)
ax1.clear()
ax1.plot(xs, ys)
ax1.set_title('Trade data')
注意*
我遇到的另一个问题是我需要在我的 anaconda 目录中设置一个指向 /library/plugins 的环境 PATH 变量,这解决了收到此错误消息的问题:
此应用程序无法启动,因为它无法在“”中找到或加载 qt 平台插件“windows”。
但是,一旦 id 喜欢使用任何其他需要 PyQt 的程序,就需要将其删除。
*编辑*
我已经根据响应更改了代码,但还没有让绘图连续加载和显示数据。
class Chart:
import matplotlib.pyplot
import matplotlib.animation as animation
plt = matplotlib.pyplot
def __init__(self):
fig = self.plt.figure(figsize=(5, 5))
self.ax1 = fig.add_subplot(1, 1, 1)
self.line, = self.ax1.plot([], [])
ani = self.animation.FuncAnimation(fig, self.update, interval=1000, blit=True)
self.plt.show()
def update(self, i):
# I don't think its essential to pass the loc as a param just yet.
data = pd.read_csv('chart_values.csv', header=0)
self.line.set_data(data['timestamp'], data['last'])
self.ax1.set_title('Trade data')
键盘中断程序后出现以下错误:
ValueError:无法将字符串转换为浮点数:'2020-05-21T17:04:13.645Z'
也:
RuntimeError:动画函数必须返回一系列 Artist 对象。