You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中绘制带标记点的行数据折线图?

Pandas DataFrame 折线图绘制实现

首先构造示例中的DataFrame:

import pandas as pd
import matplotlib.pyplot as plt

# 构造数据
data = {
    "sample_number": [1, 2, 3, 4, 5, 6],
    "data_point_1": [0.10, 0.50, 0.25, 0.17, 0.65, 0.49],
    "data_point_2": [0.15, 0.54, 0.32, 0.27, 0.51, 0.62],
    "data_point_3": [0.29, 0.71, 0.51, 0.34, 0.71, 0.69],
    "sig_point": [0.20, 0.62, 0.45, 0.30, 0.62, 0.64]
}
df = pd.DataFrame(data)

场景1:绘制单个样本的折线图

指定目标样本(比如sample_number=2),提取其三个data_point绘制折线,并标记sig_point位置:

# 筛选目标样本行
target_sample = df[df["sample_number"] == 2].iloc[0]

# 提取data_point的标签和数值
x_labels = ["data_point_1", "data_point_2", "data_point_3"]
y_data = target_sample[x_labels].values

# 绘制折线图
plt.figure(figsize=(8, 5))
plt.plot(x_labels, y_data, marker='o', color='blue', linewidth=2, label=f"Sample {target_sample['sample_number']}")

# 标记sig_point:添加水平虚线+红色"x"标记
plt.axhline(y=target_sample["sig_point"], color='red', linestyle='--', alpha=0.7)
plt.text(x=x_labels[1], y=target_sample["sig_point"] + 0.02, s='x', fontsize=14, color='red', 
         label=f"Sig Point: {target_sample['sig_point']}")

# 设置图表属性
plt.title(f"Sample {target_sample['sample_number']} Data Points", fontsize=14)
plt.xlabel("Data Point Type", fontsize=12)
plt.ylabel("Value", fontsize=12)
plt.legend()
plt.grid(axis='y', alpha=0.3)
plt.show()

场景2:循环绘制多个样本的折线图(带图例和sig_point标记)

使用df.iterrows()遍历所有样本,逐个绘制折线,并为每个样本标记对应的sig_point:

plt.figure(figsize=(10, 6))

# 遍历每一行样本
for index, row in df.iterrows():
    x_labels = ["data_point_1", "data_point_2", "data_point_3"]
    y_data = row[x_labels].values
    
    # 绘制当前样本的折线
    plt.plot(x_labels, y_data, marker='o', linewidth=2, label=f"Sample {row['sample_number']}")
    
    # 在图表右侧标记当前样本的sig_point
    plt.text(x=3.1, y=row["sig_point"], s='x', fontsize=12, 
             color=plt.gca().lines[-1].get_color())
    # 添加sig_point数值标注(可选)
    plt.text(x=3.2, y=row["sig_point"], s=f"{row['sig_point']}", fontsize=10,
             color=plt.gca().lines[-1].get_color())

# 设置图表属性
plt.title("All Samples Data Points with Sig Point Markers", fontsize=14)
plt.xlabel("Data Point Type", fontsize=12)
plt.ylabel("Value", fontsize=12)
# 调整x轴范围,给右侧标记留出空间
plt.xlim(-0.2, 3.8)
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
plt.grid(axis='y', alpha=0.3)
plt.tight_layout()
plt.show()

说明

  • 场景1用水平虚线突出sig_point的数值位置,红色"x"清晰标记关键值
  • 场景2中每个样本的折线和sig_point标记使用同一种颜色,右侧标注方便对应查看,图例放在右侧避免遮挡图表

内容的提问来源于stack exchange,提问作者MAtennis9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 00:05:02