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

Matplotlib中移除子图但保留轴标签及空位子图轴标签设置问题

解决Matplotlib 2x2子图保留空位置y轴标签的问题

我完全懂你的需求——要做2行2列的子图布局,只绘制3个内容,左下角留空但得保留这个位置的y轴标签来指代整个第二行对吧?直接用axis('off')确实会连标签一起删掉,咱们换个思路,手动隐藏不需要的元素,只留下y轴标签就行,具体实现如下:

步骤1:创建基础布局并绘制已有子图

先导入库,生成2x2的子图网格,然后把需要的三个子图画好:

import matplotlib.pyplot as plt

# 创建2行2列的子图,设置合适的画布大小
fig, axs = plt.subplots(2, 2, figsize=(8, 6))

# 绘制左上角子图
axs[0, 0].plot([1,2,3], [4,5,6])
axs[0, 0].set_title('Top Left')

# 绘制右上角子图
axs[0, 1].plot([1,2,3], [6,5,4])
axs[0, 1].set_title('Top Right')

# 绘制右下角子图
axs[1, 1].plot([1,2,3], [4,6,5])
axs[1, 1].set_title('Bottom Right')

步骤2:处理左下角的空轴

不要用axis('off'),而是逐个隐藏不需要的元素,保留y轴标签:

# 获取左下角的空轴对象
empty_ax = axs[1, 0]

# 设置第二行的y轴标签
empty_ax.set_ylabel('Second Row', fontsize=12)

# 隐藏x轴的刻度和标签
empty_ax.set_xticks([])
empty_ax.set_xticklabels([])

# 隐藏除左侧y轴边框外的所有边框
for spine in ['top', 'right', 'bottom']:
    empty_ax.spines[spine].set_visible(False)

# 隐藏y轴的刻度(只保留标签)
empty_ax.set_yticks([])

# 可选:调整标签位置,让它更居中对齐第二行
empty_ax.yaxis.set_label_coords(-0.15, 0.5)

最后调整并展示

最后加一句调整布局的代码,避免标签和子图重叠:

plt.tight_layout()
plt.show()

这样操作后,左下角的位置就会是空的,但y轴标签会保留下来,完美实现你要的效果~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:58:40