python - 绘制实时串行数据时加快 mplotlib
问题描述
我正在使用 Arduino 创建周围区域的 3d 激光雷达扫描,并通过串行将 x、y、z 坐标发送到 python 脚本以实时可视化数据。我遇到的问题是 mplotlib 太慢了,无法跟上流。我有一种感觉,这是由于完全重绘了情节,但我还没有找到解决办法。我通过串行写入 s1000 以启动激光雷达扫描,并每秒发送一次 ax、y、z 坐标。
import serial
import numpy
import matplotlib.pyplot as plt #import matplotlib library
from mpl_toolkits.mplot3d import Axes3D
from drawnow import *
from matplotlib import animation
import time
ser = serial.Serial('COM7',9600,timeout=5)
ser.flushInput()
time.sleep(5)
ser.write(bytes(b's1000'))
plt.ion()
fig = plt.figure(figsize=(16,12))
ax = fig.add_subplot(111, projection="3d")
ax.set_xlim3d(-255, 255)
ax.set_ylim3d(-255, 255)
ax.set_zlim3d(-255, 255)
x=list()
y=list()
z=list()
while True:
try:
ser_bytes = ser.readline()
data = str(ser_bytes[0:len(ser_bytes)-2].decode("utf-8"))
xyz = data.split(", ")
dx = float(xyz[0])
dy = float(xyz[1])
dz = float(xyz[2].replace(";",""))
x.append(dx);
y.append(dy);
z.append(dz);
ax.scatter(x,y,z, c='r',marker='o')
plt.draw()
plt.pause(0.0001)
except:
print("Keyboard Interrupt")
ser.close()
break
解决方案
推荐阅读
- r - R kable/kableExtra,按百分比的条件格式(有缺失值)
- browser - css 定位器不适用于带有 $(...) 的控制台,但适用于 chrome 和 firefox 中的 $$(...)
- mysql - SQL 查询列出 2020 年至少有一名学生排名在 1 和 3 之间的所有大学
- github - 如何使用 github 工作流在 lerna 中发布先前次要/主要版本的补丁版本
- android - 如何在 React 中使用自定义字体 - Native 0.64,iOS 可以,但 Android 不能
- ios - 使用 transferFile 时 Apple Watch 和 iPhone 之间的连接丢失
- google-sheets - 到本周的时间序列图
- sql - 取某些日期的值,该日期在工作日的特定时间,但在周末的特定时间取不同的日期
- javascript - 如何在不使用 document.write() 的情况下为 CDN 库创建回退
- python-3.x - 当你构建一个 Python 轮子时会发生什么?