gpt4 book ai didi

python - 在matplotlib中绘制实时图递归错误

转载 作者:太空宇宙 更新时间:2023-11-03 21:41:56 25 4
gpt4 key购买 nike

我正在尝试使用下面的代码从 pandas 数据帧动态绘制图表。问题是 update_graph() 行给出错误 ( https://gist.github.com/ishikawa-rei/759d9063c3add40712cd5a16696f9532 )。如果我注释掉该行,代码就会运行,但图表上不会按预期显示任何内容。数据取自 csv 文件,该文件有一行数据,当某些内容发生变化时会更新,并且仅包含 -100 到 100 之间的值,如下例。

google ... amazon ... apple
77 50 -100

.

import matplotlib
matplotlib.use('TkAgg')

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

objects = ("google","ibm","kaspersky","amazon","facebook","sony","microsoft","apple")

def update_graph():
fig.clear()
cols = ["google","ibm","kaspersky","amazon","facebook","sony","microsoft","apple"]
df = pd.read_csv("C:/Users/dmnte/PycharmProjects/sentiment_analysis/live_information.csv",header=None, names=cols,encoding = "UTF-8",low_memory=False)
y_pos = np.arange(len(objects))
performance = df.values.tolist()
flat_list = [item for sublist in performance for item in sublist]
plt.bar(y_pos, flat_list, align='center', alpha=0.5)
plt.xticks(y_pos, objects)
plt.ylabel('company sentiment (%)')
plt.title('Real time company sentiment')
fig.canvas.draw()
win.after(20000, update_graph())

fig = plt.figure()
win = fig.canvas.manager.window
update_graph()
plt.show()

最佳答案

我认为您的代码的唯一问题是您没有将 update_graph 函数的引用传递给 win.after() 而是执行后的返回值update_graph() 的。我想说的是:作为参数传递 update_graphupdate_graph() 之间是有区别的。

这是一个工作玩具代码,我在其中更改了数据加载。您可以插入自己的 get_data() 函数,在其中加载 .csv 文件。

import matplotlib
matplotlib.use('TkAgg')

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd


objects = ("google","ibm","kaspersky","amazon","facebook","sony","microsoft","apple")

def get_data():
return np.random.randint(1,100, len(objects))

def update_graph():
fig.clear()
y_pos=np.arange(len(objects))
data=get_data()
plt.bar(y_pos, data, align="center", alpha=0.5)
plt.xticks(y_pos, objects)
plt.ylabel("company sentiment (%)")
plt.title("Real time company sentiment")
fig.canvas.draw()
fig.canvas.manager.window.after(100, update_graph)


fig = plt.figure()
win = fig.canvas.manager.window
win.after(100, update_graph)
plt.show()

关于python - 在matplotlib中绘制实时图递归错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52791397/

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