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

Matplotlib中如何让对数坐标轴的刻度线全部朝内显示?

问题复现

在matplotlib中尝试将坐标轴刻度设置为朝绘图区内侧时,编写如下代码:

plt.tick_params(axis='x', direction='in')
plt.tick_params(axis="y", direction="in")
plt.yscale("log")

实际效果为x轴刻度全部朝内,y轴仅主刻度朝内,对数次刻度仍然朝外,调整plt.yscale("log")和tick_params的执行顺序无法解决问题,效果如下:
y轴对数次刻度朝外效果示意图

故障原因

matplotlib的tick_params方法默认which参数值为'major',即配置仅对主刻度生效。对数y轴自动生成的次刻度不会继承主刻度的样式配置,因此始终保持默认朝外的显示状态,和代码执行顺序无关。

修复方法

在tick_params中添加which='both'参数,让配置同时作用于主刻度和次刻度即可,修正代码如下:

plt.tick_params(axis='x', direction='in', which='both')
plt.yscale("log")
plt.tick_params(axis="y", direction="in", which='both')

如果需要对主次刻度做差异化样式调整,可分别指定which参数单独配置,例如:

# 主刻度朝内,长度6像素
plt.tick_params(axis="y", which='major', direction='in', length=6)
# 次刻度朝内,长度3像素
plt.tick_params(axis="y", which='minor', direction='in', length=3)

执行后y轴所有对数刻度都会统一朝绘图区域内侧显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:15:43