python - 更新时使用 matplotlib "smears"滚动绘图

标签 python matplotlib plot

我正在编写的应用程序需要实时绘制传入数据,这些数据长期存储在 Excel 电子表格中。因此实时图表显示最近的 25 个数据点。

当绘图必须移入最新的数据点并移出最旧的点时,问题就来了。当我这样做时,图表“涂抹”如下所示: here

然后我开始使用 plt.cla(),但这会导致我丢失绘图中的所有格式,例如标题、轴等。我有什么方法可以更新我的图表,但保留我的图表格式?

这是 plt.cla() 之后的一个例子:

after plt.cla() .

这基本上是我如何在一个更大的循环中更新我的图表:

if data_point_index < max_data_points:
    y_data[data_point_index] = measurement
    plt.plot(x_data[:data_point_index + 1], y_data[:data_point_index + 1], 'or--')
else:
    plt.cla()
    y_data[0:max_data_points - 1] = y_data[1:max_data_points]
    y_data[max_data_points - 1] = measurement
    plt.plot(x_data, y_data, 'or--')
plt.pause(0.00001)

我知道我可以重新添加轴标签等,但我觉得应该有更 Eloquent 方法来这样做,这有点麻烦,因为可能有多个子图,重新格式化图形需要一段不平凡的时间。

最佳答案

而不是 plt.cla(),正如您所发现的,它会清除轴上的所有内容,您可以只删除绘制的最后一行,这将使您的标签和格式保持不变。

Axes 实例有一个属性lines,它存储当前绘制在轴上的所有线。要删除绘制的最后一条线,我们可以使用 plt.gca() 访问当前轴,然后从 lines 列表中访问 pop() > 在轴上。

else:
    plt.gca().lines.pop()
    y_data[0:max_data_points - 1] = y_data[1:max_data_points]
    y_data[max_data_points - 1] = measurement
    plt.plot(x_data, y_data, 'or--')

关于python - 更新时使用 matplotlib "smears"滚动绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34595929/

相关文章:

python - 在 Jupyter notebook 下方显示新的 matplotlib 图

python - 属性错误 : 'time.struct_time' object has no attribute 'toordinal'

r - 关于如何使用 R 和 ggplot2 绘制背靠背图的问题

r - 在没有标签的约束排序中绘制向量

python - 循环输入日期并将函数应用于 pandas 数据框

python - PostgreSQL-ModuleNotFoundError : No module named 'psycopg2'

python - 如何从 Python 中的一组线性方程式中绘制平面?

python - 使用 Anaconda 3.4 在 Windows 7 64 位中安装 Pygame

python - 我应该如何设置 postman 来测试 python request.post 方法的 API

javascript - 计算绘图 Y 轴标签值