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

使用plt.subplots_adjust后xticks消失?2x2子图刻度配置问题

2x2子图刻度与标签显示解决方案

直接上可运行的代码,完全匹配你的需求:

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 创建2x2子图,共享列x轴、行y轴,同时消除子图间距
fig, axs = plt.subplots(2, 2, sharex='col', sharey='row', gridspec_kw={'wspace': 0, 'hspace': 0})

# 遍历子图绘制数据
for i in range(2):
    for j in range(2):
        axs[i, j].plot(x, y + i + j)

# 默认隐藏所有子图的刻度标签(保留刻度线)
for ax in axs.flat:
    ax.tick_params(labelbottom=False, labelleft=False)

# 让底部行的子图显示x轴标签
for ax in axs[-1, :]:
    ax.tick_params(labelbottom=True)

# 让左侧列的子图显示y轴标签
for ax in axs[:, 0]:
    ax.tick_params(labelleft=True)

plt.show()

你的方法出问题的原因

你用set_xticklabels([])会直接清空标签文本,加上子图共享轴的特性,修改一个子图的标签会同步影响整个共享组的状态——哪怕你后续移除该语句,共享轴的标签显示状态已经被改变。而用tick_params是控制标签的显示开关,不会修改标签内容,也不会影响刻度线的存在,刚好满足你的需求:所有子图保留刻度线,仅指定位置显示标签,同时子图间距为0。

额外说明

  • sharex='col'和sharey='row'让同列/同行子图共享轴,既能保证刻度对齐,又能避免重复绘制冗余刻度。
  • 如果你的子图刻度范围不统一,不需要共享轴,直接去掉sharex和sharey参数,标签控制逻辑完全不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 06:15:02