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

Matplotlib堆叠子图如何设置x轴刻度从原点184.0开始显示

解决方法

你可以通过两种方式实现x轴从坐标原点直接显示最小值184.0:

方案1:单独设置每个子图的x轴左边界

你之前调用plt.margins(x=0)没有生效的原因是该方法是全局参数设置,不会作用于已经创建完成的子图对象。你可以为每个子图单独设置x轴左边界,修改逻辑如下:

# 以第一个子图为例,其余5个子图同理添加set_xlim代码即可
plt1.plot("DOY", "By", data=df,color='black')
plt1.set_xlim(left=df["DOY"].min()) # 新增行,动态取x轴最小值作为左边界,也可直接写死为184
plt1.set_ylabel("By",size=16)
# 其余子图依次添加 pltX.set_xlim(left=df["DOY"].min()) 即可

方案2:创建子图时开启x轴共享(更推荐)

堆叠排布的子图可以直接共享x轴,仅需设置一次就能同步所有子图的x轴范围,还能避免重复显示x轴刻度,代码更简洁,完整修改示例如下:

import matplotlib.pyplot as plt

# 创建6行1列的子图,开启x轴共享
fig, axs = plt.subplots(nrows=6, ncols=1, figsize=(20,17), sharex=True)
# 统一设置所有子图x轴范围和边距
axs[0].set_xlim(left=df["DOY"].min(), right=df["DOY"].max())
axs[0].margins(x=0)

# 逐个绘制子图,axs[0]对应最上方子图,axs[5]对应最下方子图
axs[0].plot("DOY", "By", data=df, color='black')
axs[0].set_ylabel("By", size=16)
axs[0].set_title("3-6 July 2003", size=20)
axs[0].get_yaxis().set_label_coords(-0.05, 0.5)

axs[1].plot("DOY", "Bz", data=df, color='black')
axs[1].set_ylabel("Bz", size=16)
axs[1].get_yaxis().set_label_coords(-0.05, 0.5)

axs[2].plot("DOY", "Vsw", data=df, color='black')
axs[2].set_ylabel("Vsw", size=16)
axs[2].get_yaxis().set_label_coords(-0.05, 0.5)

axs[3].plot("DOY", "Nsw", data=df, color='black')
axs[3].set_ylabel("Nsw", size=16)
axs[3].get_yaxis().set_label_coords(-0.05, 0.5)

axs[4].plot("DOY", "reconnection_rate", data=df, color='black')
axs[4].set_ylabel("MRR", size=16)
axs[4].get_yaxis().set_label_coords(-0.05, 0.5)

axs[5].plot("DOY", "magnetopause_distance", data=df, color='black')
axs[5].set_ylabel("MD", size=16)
axs[5].set_xlabel("Day of Year", size=16)
axs[5].get_yaxis().set_label_coords(-0.05, 0.5)

plt.savefig('3 to 6 July 2003 plot.jpg', format='jpeg',dpi=None, edgecolor='black', transparent=True, bbox_inches='tight')

如果需要固定x轴左边界为184,直接把上述代码中的df["DOY"].min()替换为184即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:06:00