【发布时间】:2017-05-04 23:13:51
【问题描述】:
我想用 matplotlib 动画在 PyQT GUI 上显示传感器数据。 我已经有一个工作图,每次我使用以下代码从外部源收到新的传感器值时都会更新:
def __init__(self):
self.fig = Figure(figsize=(width, height), dpi=dpi)
self.axes = self.fig.add_subplot(111)
self.axes.grid()
self.xdata = []
self.ydata = []
self.entry_limit = 50
self.line, = self.axes.plot([0], [0], 'r')
def update_figure_with_new_value(self, xval: float, yval: float):
self.xdata.append(xval)
self.ydata.append(yval)
if len(self.xdata) > self.entry_limit:
self.xdata.pop(0)
self.ydata.pop(0)
self.line.set_data(self.xdata, self.ydata)
self.axes.relim()
self.axes.autoscale_view()
self.fig.canvas.draw()
self.fig.canvas.flush_events()
我现在想扩展绘图以显示具有相同 x 轴的另一个数据系列。我试图通过在上面的初始化代码中添加以下内容来实现这一点:
self.axes2 = self.axes.twinx()
self.y2data = []
self.line2, = self.axes2.plot([0], [0], 'b')
在 update_figure_with_new_value() 函数中(出于测试目的,我只是尝试将 1 加到 yval,稍后我将扩展该函数的参数):
self.y2data.append(yval+1)
if len(self.y2data) > self.entry_limit:
self.y2data.pop(0)
self.line2.set_data(self.xdata, self.ydata)
self.axes2.relim()
self.axes2.autoscale_view()
但是,我没有在图中得到两条线,它们应该具有完全相同的运动,但只是移动了一条,我得到了第二个绘图轴(蓝色)的垂直线。第一个轴(红色)保持不变,正常。
如何使用 matplotlib 更新多个轴,以便它们显示正确的值?
我正在使用 python 3.4.0 和 matplotlib 2.0.0。
【问题讨论】:
标签: python matplotlib