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

如何让Matplotlib所有子图的X轴显示整数刻度?

解决Matplotlib子图X轴刻度仅最后一个生效的问题

直接使用plt.xticks()只会修改当前激活的子图(即最后绘制的子图),要让所有子图都应用X轴整数刻度,需要针对每个子图对象单独设置,以下是两种可行方案:

方案1:遍历所有子图批量设置

将二维的子图数组展平为一维,循环每个子图对象调用set_xticks()方法,这是最简洁的批量处理方式:

import pandas as pd
import matplotlib.pyplot as plt

# 示例数据(实际替换为你的数据读取逻辑)
df = pd.DataFrame({
    'ID': [1,2,3,4,5],
    'Col1': [10,20,30,40,50],
    'Col2': [5,15,25,35,45],
    'Col3': [2,4,6,8,10],
    'Col4': [1,3,5,7,9],
    'Col5': [100,200,300,400,500],
    'Col6': [50,100,150,200,250]
})

fig, axes = plt.subplots(nrows=2, ncols=3)

# 绘制各子图
df['Col1'].plot(ax=axes[0,0], title='Col1')
df['Col2'].plot(ax=axes[0,1], title='Col2')
df['Col3'].plot(ax=axes[0,2], title='Col3')
df['Col4'].plot(ax=axes[1,0], title='Col4')
df['Col5'].plot(ax=axes[1,1], title='Col5')
df['Col6'].plot(ax=axes[1,2], title='Col6')

# 遍历所有子图设置X轴刻度
for ax in axes.flat:
    ax.set_xticks(df['ID'])

plt.tight_layout()  # 调整子图间距,避免标题和刻度重叠
plt.show()

方案2:绘制单个子图后立即设置

如果需要对特定子图单独调整,可以在绘制每个子图后,直接调用对应子图对象的set_xticks():

# 绘制第一个子图并设置刻度
df['Col1'].plot(ax=axes[0,0], title='Col1')
axes[0,0].set_xticks(df['ID'])

# 其余子图同理
df['Col2'].plot(ax=axes[0,1], title='Col2')
axes[0,1].set_xticks(df['ID'])
# ... 重复操作剩余子图

关键说明

plt.xticks()是全局操作,仅对当前活跃的子图生效;而子图对象的set_xticks()是针对单个子图的精准设置,不会被后续绘图操作覆盖,能确保所有子图都应用指定刻度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:22:46