为什么我的matplotlib动画不在tkinter上绘制?

0 投票
1 回答
21 浏览
提问于 2025-04-14 18:22

我正在尝试把一个 csv 文件里的股票价格动画化,然后在 matplotlib 图表上显示,并把这个图表嵌入到 tkinter 窗口里。问题是,我好像没法让它在 tkinter 中正常工作。

我遇到的问题是,它在 tkinter 窗口中只显示了一个空的 matplotlib 图表,就像图片所示的那样。

输出结果:

输出结果

当我在一个分开的终端中运行我的另一个脚本来生成价格,并用另一个脚本仅用 matplotlib 动画化时,它是可以正常工作的,但每当我尝试把它放到 tkinter 窗口中时,就不行了。

这是我的代码:

import tkinter
from matplotlib.backends.backend_tkagg import (
    FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib import pyplot as plt, animation
import pandas as pd

root = tkinter.Tk()
root.title("Embed Animation to Tkinter frame")

fig = plt.Figure(dpi=100)
ax = fig.add_subplot(111)
line, = ax.plot([], [])

canvas = FigureCanvasTkAgg(fig, master=root)
canvas.draw()

canvas.get_tk_widget().pack()

def animate(i):
    data = pd.read_csv('data.csv')
    x = data['x_value']
    price = data['stock_price']
    line.set_data(x, price)
    return line,

anim = animation.FuncAnimation(fig, animate, interval=1000)
tkinter.mainloop()

我看了无数关于 matplotlib 动画和 tkinter 的视频,但我还是搞不清楚为什么它不工作。

这个 csv 文件的内容:

csv文件内容

1 个回答

0

可能是没有设置绘图选项。试试加上下面的代码:

line=plt.plot(variable, variable, color='skyblue', marker='o', markerfacecolor='blue', markersize=6)[0]

撰写回答