【问题标题】:Real time plotting using Matplotlib. X axis getting over-written使用 Matplotlib 进行实时绘图。 X 轴被覆盖
【发布时间】:2020-01-11 19:53:17
【问题描述】:

我正在使用重复打开的文件中的解析数据绘制实时数据。绘图效果很好,直到 X 轴(时间)用完一个房间。我试图找出一种方法来前进到下一个元素并将时间值向左移动。此处包含代码和屏幕截图。

import matplotlib.pyplot as plt
import csv
import datetime
from matplotlib.animation import FuncAnimation

x = []
y = []
rssi_val = []

def animate(i):
    with open('stats.txt', 'r') as searchfile:
#        time = (searchfile.read(5))
        time = (searchfile.read(8))
        for line in searchfile:
            if 'agrCtlRSSI:' in line:
                rssi_val = line[16:20]
                y.append(rssi_val)
                x.append(time[-1])


    plt.cla()
    plt.plot(x,y)
    next(x)
    plt.xlabel('Time')
    plt.ylabel('RSSI')
    plt.title('Real time signal strength seen by client X')
    plt.tight_layout()

ani = FuncAnimation(plt.gcf(), animate, interval=5000)
plt.show()

【问题讨论】:

    标签: python matplotlib real-time


    【解决方案1】:

    你可以旋转标签,

    for label in ax.get_xticklabels():
        label.set_rotation(90)
    

    ax.tick_params('x', labelrotation=90)
    

    之前调用plt.plot()

    【讨论】:

    • 再次感谢威廉。但是,当我在 plt.plot(x,y) 上方添加它时,我得到“AttributeError:'list' 对象没有属性'get_xticklabels'。我想这是因为我没有正确定义某些东西(?)。
    • ax=plt.gca() 开头或使用plt.gca().get_xticklabels()
    • 我尝试了第一个建议,然后是第二个,不幸的是时间值仍然受到挤压。上面更新的图像中的整个 sn-p。
    • @wiwinut 需要在plt.plot()之后
    • 你又来救我了。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 2021-01-19
    • 2017-01-01
    • 1970-01-01
    相关资源
    最近更新 更多