【问题标题】:python (pandas?) live plotpython(熊猫?)现场图
【发布时间】:2016-11-30 13:04:46
【问题描述】:

我一直在尝试从 pandas 数据框中获取更新的图,但没有成功。我的问题:绘图窗口没有出现(它没有隐藏 - 我很确定)。

我已经尝试从 stackoverflow 重建和更改不同的解决方案。我最近的尝试是基于this post。纯复制,粘贴确实有效,所以问题需要在我的修改中。

我把它改成了这个,因为我想每秒自动更新一次。

import serial as s
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from time import sleep

data = pd.DataFrame(np.random.random((10,10))) # I want to use pandas because 
# of easier timestamp handling   

fig, ax = plt.subplots()
ax.set(title='title')
im = ax.imshow(data)

while True:
    im.set_data(np.random.random((10,10)))
    print "hello" #just to see if sth happens
    fig.canvas.draw()
    sleep(1)

plt.show()

只是解释一下:稍后我想从串行端口读取数据并将它们提供给绘图以使我的数据可视化。

嗯,你所期望的:提供的代码确实每秒打印 hello,但没有显示任何情节。有任何想法吗?我没有他们。

顺便说一句:我很惊讶这种问题没有“简单、直接”的解决方案。我可以想象,有一些人在尝试更新剧情?!

【问题讨论】:

  • 你永远不会离开while True,所以你的代码永远不会到达show部分。
  • @Lafexlos:没错, plt.show() 有点多余,但 fig.canvas.draw() 应该显示情节。我检查了你提出的两个链接,但没有得到我想要的结果。

标签: python pandas plot live


【解决方案1】:

你可以使用包drawnow

from pylab import * # import matplotlib before drawnow
from drawnow import drawnow, figure
from time import sleep
import numpy as np

def draw_fig_real():
    imshow(data, interpolation='nearest')

data = np.random.random((10,10))

figure()
for i in range(10):
    data = np.random.random((10,10))
    sleep(0.5)
    drawnow(draw_fig_real)

希望对你有帮助

【讨论】:

  • 只是快速尝试,但看起来很有希望!
猜你喜欢
  • 2018-05-28
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多