如何在matplotlib中按DataFrame同列值连接对应数据点
实现方法
核心思路是对a列做分组遍历,根据每组样本数量选择绘图方式:样本数≥2的绘制带标记的折线,单个样本仅绘制散点标记即可。
完整代码示例
import pandas as pd import matplotlib.pyplot as plt # 示例数据集 df = pd.DataFrame({'a': ['foo', 'foo', 'bar', 'baz', 'baz', 'baz', 'foobar'], 'x': [3, 4, 1, 5, 5.5, 5.2, 8]}) # 按a列分组绘图 for group_name, group_data in df.groupby('a', sort=False): y_values = group_data['x'].tolist() # 同组内x轴默认按顺序排列,可根据实际需求替换为对应x轴字段 x_values = list(range(len(y_values))) if len(y_values) >= 2: # 多数据点绘制折线+标记 plt.plot(x_values, y_values, marker='o', label=group_name) else: # 孤立点仅绘制散点标记 plt.scatter(x_values, y_values, marker='o', label=group_name) # 可选配置:隐藏组内x轴刻度(不需要可以删除) plt.xticks([]) plt.ylabel('x取值') plt.legend() plt.show()
说明
- 如果你的数据有专门的x轴对应字段,直接替换
x_values = list(range(len(y_values)))即可,不需要用默认的组内顺序 - 折线、散点的颜色、标记样式都可以根据需求自定义修改参数
内容的提问来源于stack exchange,提问作者user270199
相关产品推荐
相关产品推荐

