需求:基于含3个时间变量的DataFrame绘制带基线的轨迹折线图
解决方案
1. 数据预处理
首先修正原始DataFrame里的列名拼写错误(TIme_3改为Time_3),给每条轨迹添加上(0,0)基线起点,再把宽格式数据转成适合绘图的长格式:
import pandas as pd import matplotlib.pyplot as plt # 修正列名并创建DataFrame df = pd.DataFrame({ "Time_1": [-4.5, -0.8, -3.0, 0.2, -2.5], "Time_2": [-3, -0.2, -2.5, 0.3, 1], "Time_3": [-2, 0, -1, 0.5, 1] }) # 添加基线起点(0,0),调整列顺序 df["Time_0"] = 0 df = df[["Time_0", "Time_1", "Time_2", "Time_3"]] # 转换为长格式,提取时间点数字 df_long = df.melt(var_name="Time", value_name="Value", ignore_index=False).reset_index() df_long["Time_Point"] = df_long["Time"].str.extract(r'(\d+)').astype(int)
2. 绘制目标轨迹图
用Matplotlib绘制每条观测的轨迹线,同时在每个时间点添加数值标记点,设置X轴对应时间点标签:
plt.figure(figsize=(8, 6)) # 逐个绘制每条观测的轨迹 for idx in df_long["index"].unique(): track_data = df_long[df_long["index"] == idx] plt.plot(track_data["Time_Point"], track_data["Value"], marker='o', linestyle='-', alpha=0.7) # 设置X轴刻度与标签 plt.xticks([0, 1, 2, 3], ["基线", "Time_1", "Time_2", "Time_3"]) plt.xlabel("时间点") plt.ylabel("观测指标数值") plt.title("观测指标时间轨迹图") plt.grid(True, alpha=0.3) plt.show()
核心要点
- 修正列名拼写错误避免后续报错
- 通过新增
Time_0列实现(0,0)基线起点的要求 - 长格式数据更适合按单条观测轨迹绘制
marker='o'参数确保每个时间点都显示数值点,匹配参考图样式
内容的提问来源于stack exchange,提问作者Luis_12345
相关产品推荐
相关产品推荐

