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

Matplotlib imshow隐藏坐标轴刻度边框但保留轴标签的实现问题

解决方案:保留y轴标签的同时移除子图刻度与边框

问题原因

ax.axis('off')会一次性隐藏所有坐标轴相关元素,包括刻度、边框、轴标签,因此直接使用该方法会导致提前设置的y轴标签同步消失。

方案1:单独隐藏刻度与边框(推荐)

精准控制需要隐藏的元素,避免误删已设置的标签:

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots(nrows=3, ncols=4, figsize=(16, 12))
for i in range(3):
    ax[i][0].set_ylabel(str(i))
    for j in range(4):
        ax[0][j].set_title(str(j))
        ax[i][j].imshow(np.random.normal(0, 1, (50, 50)))
        # 隐藏x、y轴的刻度及刻度标签
        ax[i][j].set_xticks([])
        ax[i][j].set_yticks([])
        # 隐藏子图四周的黑色边框
        for spine in ax[i][j].spines.values():
            spine.set_visible(False)

plt.show()

方案2:先关闭所有轴元素,再重新设置y轴标签

如果你习惯用axis('off')的简洁写法,可以在关闭轴之后,再给第一列子图单独设置y轴标签:

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots(nrows=3, ncols=4, figsize=(16, 12))
for i in range(3):
    for j in range(4):
        ax[0][j].set_title(str(j))
        ax[i][j].imshow(np.random.normal(0, 1, (50, 50)))
        ax[i][j].axis('off')
    # 关闭轴后再设置y轴标签,标签会正常显示
    ax[i][0].set_ylabel(str(i))

plt.show()

两种方案最终效果完全一致:所有子图无刻度、无边框,同时保留第一列的y轴标签和第一行的子图标题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:48:01