【问题标题】:Can't show animation for bar graph in Matplotlib无法在 Matplotlib 中显示条形图的动画
【发布时间】:2016-04-25 04:32:25
【问题描述】:

我有一个不断更新单个值的文本文件。我正在尝试使用 matplotlib 的动画来显示这个值,但我遇到了很多问题。例如,我想在文本文件上显示一个每秒都在变化的值(值范围从 0 到 150),并且我希望条形图的高度随着这个值而增加和减少。

我想对水平图做同样的事情。我还想为不同的值(0 到 360 之间)显示一个围绕圆圈移动的点。

我尝试了很多东西,但它不断破坏代码或 matplotlib 冻结。我一直在尝试使用 matplotlib 的动画。

任何帮助将不胜感激。 当我运行代码时,我看不到条形图

import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.animation as animation
import random

mf = r"data.txt"

fig = plt.figure()
ax = p3.Axes3D(fig)
xpos = 0
ypos = 0
zpos = 0
dx = 1
dy = 1





def update_bars():
    mmf = open(mf) 
    lines = mmf.readlines()
    depth_1 = lines[3]
    dz = depth_1


    bars = ax.bar3d(xpos, ypos, zpos, dx, dy, dz, color= 'b')
    return bars

## add bars


ax.set_title('Depth')

line_ani = animation.FuncAnimation(fig, update_bars, 500, interval=100)
plt.show()

【问题讨论】:

  • 你列出的问题太多了。如果您看不到条形图,则很难对其进行动画处理!请 (1) 提供一个包含数据的最小示例,并且 (2) 一次提出一个重点问题。
  • Reblochon 说得好。复杂性通常会杀死您,最好将问题分开。为什么不让文件读出并让update 函数生成一个随机值。
  • @ReblochonMasque 我删掉了很多代码来解决问题。这应该每秒更新一次条形图。深度是 0 到 50 之间的整数。数据是每秒更新的 5 行(每行包含一个整数)。第 3 行是深度,显示为 depth_1。我只需要每秒更新一次图表。
  • 您有可以看到的图表吗?提供模拟数据,以便它可以被复制......制作一个不存在的图表非常困难。
  • @ReblochonMasque 这是我要使用的示例:stackoverflow.com/questions/35455041/… 这是我在每次运行代码而不打开文本文件时看到的:prntscr.com/awj2bu 代码在它旁边还有

标签: python animation matplotlib


【解决方案1】:

只需将 depth_1 = lines[3] 更改为这个 depth_1 = int(lines[3])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 2022-09-25
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 2017-06-30
    相关资源
    最近更新 更多