plt.plot()动态绘制折线无点显示问题求助
问题原因
plt.plot(x, y)默认绘制折线,但你每次只传入单个标量x和y,没有前后坐标点来形成线段,默认线条样式(无标记)下自然看不到任何内容。plt.scatter(x,y)是专门的散点绘制函数,单个点就能正常显示;plt.plot(x,y,'o-')里的'o'是点标记,'-'是线条样式,但因为每次只传单个点,线条没有可连接的前后节点,所以实际只显示了点,效果和scatter一致。
解决方案
要动态绘制折线图,需要累积每次的坐标数据,每次绘制时把所有历史数据都画出来,这样就能形成逐步延伸的折线效果:
from matplotlib import pyplot as plt import numpy as np # 初始化空列表存储历史坐标 x_data = [] y_data = [] plt.ion() # 开启交互模式,让动态绘图更流畅 for i in range(10): x = i y = np.random.randint(1,11) x_data.append(x) y_data.append(y) plt.cla() # 清除当前轴,避免重复绘制叠加 plt.plot(x_data, y_data, '-') # 绘制完整折线 plt.pause(0.05) plt.ioff() # 关闭交互模式 plt.show()
如果想要同时显示折线和每个数据点的标记,把样式改成'-o'即可:
plt.plot(x_data, y_data, '-o')
注:plt.pause(0.05)的作用是暂停并刷新绘图窗口,和你看不到内容的核心原因无关,它只是让动态效果能被肉眼观察到。
内容的提问来源于stack exchange,提问作者Pouria
相关产品推荐
相关产品推荐

