python - 如何在数据文件更改时动态更新我的 matplotlib 图?

标签 python plot matplotlib

我有一个 python 脚本,它读取数据文件并使用 matplotlib 库显示一个包含四个图的图形。数据文件每隔几秒更新一次,因为它是同时运行的不同软件的输出文件。我希望我的 matplotlib 图中的四个图每 20 秒使用更新的数据文件刷新一次。我实现它的方式如下:

import pylab as pl
import time

pl.ion()
fig = pl.figure()
while True:
    f = open('data.out', 'rb')
    #code to parse data and plot four charts
    ax = fig.add_subplot(2,2,1)
    #...
    ax = fig.add_subplot(2,2,4)
    #...
    pl.draw()
    time.sleep(20)

这行得通,但我失去了缩放和平移按钮的功能,如果调用 pl.show() ,这些按钮通常可以正常工作。这不是最佳的。但是,如果用 pl.show() 代替 pl.draw(),脚本将不再更新绘图。有没有办法在不完全失去缩放/平移功能的情况下动态更新绘图?

最佳答案

您的代码有点太模糊,不知道发生了什么。

我可以提供这个: 如果您创建子图一次,保存所有坐标区对象然后调用 show(),您应该保留正常功能。

可以像这样对这些子图进行后续更改:

#inside while loop
for i in #subplotlist
    ax[i].clear()    #ax[i] is the axis object of the i'th subplot
    ax[i].plot(#plotstuff)
    ax[i].draw()

如果您愿意,可以手动添加用于缩放和平移的工具栏。

关于python - 如何在数据文件更改时动态更新我的 matplotlib 图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8406385/

相关文章:

python - 如何反转坐标向量并将转换应用于所有数据变量?

python - 需要帮助解决 Raspberry Pi 上 matplotlib 的性能问题

Python Fabric 报价问题

python - 如何在 Python 中使用 twitter API 提取包含特定关键字的推文位置

plot - gnuplot:从单个文件中绘制多行并手动从列和关键标题的末尾制作标题

python - Matplotlib 散点图;颜色作为第三个变量的函数

r - 在格子图中格式化轴标签

python - 在matplotlib中自动缩写长度字符串

python - Matplotlib 中绘制的点之间的连接线

python - Numpy 中的数组表达式