Matplotlib循环调用plot绘图仅显示最后一点无法连线如何解决
问题原因
ax.plot()只有在单次调用时传入包含2个及以上坐标点的x、y序列,才会自动在点与点之间生成连续连线。
你写的循环逻辑里,每次调用ax.plot()都只传入1个独立的(x,y)标量值,相当于每次都创建一个仅包含单个点的独立绘图序列:
- 独立序列之间不会自动跨调用连线
- 默认绘图样式没有配置单点标记,绝大多数单点不会正常显示
最终运行后就无法得到预期的连续连线效果。
循环实现连续连线的正确方案
最直接的实现方式是在循环中配对相邻的两个点,每次调用plot传入两点坐标绘制线段,拼接后就能得到和直接传数组完全一致的连线效果,代码如下:
fig = plt.figure(figsize=[5,5]) ax = fig.add_subplot(121) # 从第二个索引位开始遍历,和前一个点配对 for i in range(1, arr.shape[0]): # 传入相邻两点的x、y数组,即可绘制两点间的线段 ax.plot( [arr[i-1, 0], arr[i, 0]], [arr[i-1, 1], arr[i, 1]] )
如果需要在连线同时显示每个数据点,只需在plot参数中增加marker配置即可,例如marker='o'会将每个点绘制为实心圆点。
内容的提问来源于stack exchange,提问作者Alejandro
相关产品推荐
相关产品推荐

