Python如何为matplotlib散点图的数据点添加连线?
问题原因
你当前代码无法实现连线的核心原因有两点:
- 每次循环仅向
plt.plot()传入单个坐标点,plt.plot()无法基于单个点生成连接线,至少需要连续两个点才能生成线段 plt.show缺少调用括号,且放在循环内会导致每生成一个点就尝试渲染一次画布,逻辑不符合需求
正确实现方案
最优的实现方式是提前生成所有x、y坐标的序列,再一次性调用plt.plot()绘制,指定'-o'参数即可同时显示连接线和数据标记点:
import matplotlib.pyplot as plt # 生成所有坐标序列 x = list(range(1, 10)) y = [i**2 for i in x] # 一次性绘制带标记的连线 plt.plot(x, y, '-o') plt.show()
如果确实有需要在循环中逐点绘制的特殊场景,可以记录上一个点的坐标,每次循环绘制相邻两点之间的线段即可:
import matplotlib.pyplot as plt last_x, last_y = None, None for i in range(1, 10): current_y = i**2 if last_x is not None: # 绘制上一个点到当前点的线段和标记 plt.plot([last_x, i], [last_y, current_y], '-o', color='C0') else: # 第一个点单独绘制标记 plt.plot(i, current_y, 'o', color='C0') last_x, last_y = i, current_y plt.show()
补充说明:
plt.scatter()是专门用于绘制散点图的接口,本身不支持生成连线,所以单独使用它无法实现你要的效果。
内容的提问来源于stack exchange,提问作者Lazarus
相关产品推荐
相关产品推荐

