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

Matplotlib绘制正态分布时自定义X轴不显示问题求助

修复Matplotlib中移除所有轴后X轴无法显示的问题

问题出在ax.axis('off')这个操作——它不仅会隐藏所有坐标轴的spine,还会禁用刻度(ticks)和刻度标签(tick labels)的显示,所以你后续仅恢复底部spine的可见性,刻度和标签还是处于关闭状态,自然看不到完整的X轴样式。

下面是两种可行的修复方案:

方案1:精准控制不需要的轴(推荐)

不用一次性关闭所有轴,而是逐个隐藏不需要的spine和坐标轴元素,更灵活可控:

import numpy as np
from scipy.stats import norm
from matplotlib import rcParams
import matplotlib.pyplot as plt
import matplotlib as mpl

# 恢复默认参数并支持希腊符号
rcParams.update(mpl.rcParamsDefault)

mean = 0
standard_deviation = 1
num_points = 10**6 

# 生成绘图数据
x = np.linspace(mean - 3*standard_deviation, mean + 3*standard_deviation, num_points)
kde = norm.pdf(x, mean, standard_deviation) 

# 生成X轴刻度(覆盖±4σ范围)
num_std_ticks = 4
ticks = np.arange(mean - num_std_ticks * standard_deviation, 
                  mean + (num_std_ticks + 1) * standard_deviation,
                  standard_deviation) 

plt.plot(x, kde)
plt.suptitle("Normal Distribution", fontsize=14, fontweight='bold', y=1)
plt.title("(Empirical Rule)", fontsize=12, x=0.5, y=1.025) 
plt.text(0.5, 1,
         r'$\mu = ' + str(mean) + r',\sigma = ' + str(standard_deviation) + r'$',
         transform=plt.gca().transAxes, ha='center', fontsize=10) 

ax = plt.gca()

# 仅保留底部spine,隐藏其他三个
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_visible(False)

# 关闭Y轴的刻度和标签
ax.yaxis.set_ticks([])
ax.yaxis.set_ticklabels([])

# 设置X轴刻度
ax.set_xticks(ticks)
# 可选:自定义刻度标签为μ±nσ格式
# ax.set_xticklabels([f'$\mu-{abs(tick)}\sigma$' if tick <0 else f'$\mu+{tick}\sigma$' if tick>0 else '$\mu$' for tick in ticks])

plt.show()

方案2:从ax.axis('off')恢复X轴

如果一定要保留ax.axis('off')的操作,需要手动恢复X轴的刻度、标签和可见性:

# ... 前面的代码保持不变 ...

ax = plt.gca()
ax.axis('off')

# 恢复底部spine
ax.spines['bottom'].set_visible(True)
# 恢复X轴的可见性(包括刻度和标签)
ax.xaxis.set_visible(True)
# 设置刻度位置和刻度值
ax.xaxis.set_ticks_position('bottom')
ax.set_xticks(ticks)

plt.show()

关键说明

  • ax.axis('off')会将ax.xaxis和ax.yaxis的visible属性设为False,所以必须用ax.xaxis.set_visible(True)才能完整恢复X轴显示
  • 方案1的优势在于避免了全局关闭再恢复的副作用,更适合精细化控制坐标轴样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 12:43:30