data = uart_r.readline().decode().strip() data_list = data.split() float_list = float(data_list[0]) self.data.append(float_list) self.data = self.data[-50:] self.data_line.setData(np.arange(len(self.data)), self.data) 用这个函数实时显示串口接收的最新的50个数据绘制的折线图,但是现在显示的折线图中x轴没有变化,x轴可以和显示的折线图的数据实时更新变化吗?
时间: 2023-11-29 12:04:09 浏览: 156
UART.zip_rs_rs232 uart_uart_uart_t.v
可以的。根据代码中的`np.arange(len(self.data))`,横坐标是根据`self.data`的长度来生成的,因此只要在每次添加新数据时重新设置横坐标即可。具体来说,可以将`setData`的第一个参数改为一个变量,如`x_axis`,在每次更新数据时,先将`x_axis`更新为新的横坐标,再将`x_axis`和`self.data`作为参数调用`setData`方法。修改后的代码如下:
```
data = uart_r.readline().decode().strip()
data_list = data.split()
float_list = float(data_list[0])
self.data.append(float_list)
self.data = self.data[-50:]
x_axis = np.arange(len(self.data))
self.data_line.setData(x_axis, self.data)
```
这样,每次更新数据时,折线图的横坐标就会根据`self.data`的长度重新生成,实现了实时更新变化。
阅读全文