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

同DataFrame多段不同xlim数据如何对齐x=0后绘制在同一图对比

解决方案

你原来的代码每次调用M3.plot()都会默认创建新的画布和子图,所以会生成三个独立的绘图。要实现同图对比+X轴对齐到0的需求,按以下步骤修改即可:

核心思路

  • 提前创建唯一的绘图轴对象,所有数据都绘制到该轴上
  • 对每个数据分段重置索引生成从0开始的相对X轴,自动实现对齐,Y值无需额外偏移

实现代码

import matplotlib.pyplot as plt

# 提前创建统一的绘图轴对象
fig, ax = plt.subplots(figsize=(10, 6))

# 处理第一个区间[a,b],重置索引得到从0开始的x轴
seg1 = M3.loc[a:b, "Wirkleistung [W]"].reset_index(drop=True)
seg1.plot(ax=ax, label=f"区间[{a},{b}]")

# 处理第二个区间[c,d]
seg2 = M3.loc[c:d, "Wirkleistung [W]"].reset_index(drop=True)
seg2.plot(ax=ax, label=f"区间[{c},{d}]")

# 处理第三个区间[e,f]
seg3 = M3.loc[e:f, "Wirkleistung [W]"].reset_index(drop=True)
seg3.plot(ax=ax, label=f"区间[{e},{f}]")

# 配置绘图显示
ax.legend()
ax.set_xlabel("相对位置(对齐到片段起始点)")
ax.set_ylabel("Wirkleistung [W]")
plt.show()

补充说明

如果你的DataFrame索引是时间序列,想要保留相对时间间隔而非用整数索引,可以手动计算相对秒数作为x轴:

# 以时间序列索引为例
seg1 = M3.loc[a:b, "Wirkleistung [W]"]
seg1_x = (seg1.index - seg1.index[0]).total_seconds()
ax.plot(seg1_x, seg1.values, label=f"区间[{a},{b}]")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:45:05