在 Windows 中,我尝试运行这段代码。串行工作正常,罗盘值转换为 float matplotlib 图已打开,但 matplotlib 窗口“无响应” 未绘制任何内容。
import serial
import numpy
import matplotlib.pyplot as plt
ser = serial.Serial('COM8',9600,timeout=2)
ciz,=plt.plot([],[])
def update_ciz(ciz,newdata):
ciz.set_xdata(numpy.append(ciz.get_xdata(),newdata))
ciz.set_ydata(numpy.append(ciz.get_ydata(),newdata))
plt.draw()
while (True):
line = ser.readline()
k=line.split(":")
temperature=k[0]
pressure= k[1]
attitude=k[2]
realAttitude=k[3]
compass=float(k[4])
gx=k[5]
gy=k[6]
gz=k[7]
ax=k[8]
ay=k[9]
az=k[10]
acond=k[11]
update_ciz(ciz,compass)
最佳答案
在 matplotlib 中,您需要使用“plt.show()”来显示绘图。由于您正在使用“plt.draw()”更新绘图,您可能还想使用交互模式。
尝试在您的“ciz,=plt.plot([],[])”命令之后包含这个:
plt.ion()
plt.show()
关于python - matplotlib 图打开但 matplotlib 窗口 "not responding",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18639597/