You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Matplotlib中移除xtick/ytick坐标轴刻度但保留网格的方法

如何在Matplotlib中移除坐标轴刻度却保留网格?

哈哈,这个场景太常见了——想用ax.set_xticks([])ax.set_yticks([])去掉x、y轴的刻度,结果连网格也一起消失了,但又想保留网格作为参考线,就像你给出的目标效果这样:
目标图表效果

别担心,有两种简单的方法可以实现你的需求:

方法一:隐藏刻度线和标签,保留刻度位置(推荐)

其实根本不用清空刻度列表,我们只需要把刻度线刻度标签隐藏起来,让Matplotlib仍然基于原来的刻度位置生成网格就行。代码示例如下:

import matplotlib.pyplot as plt

# 创建画布和轴对象
fig, ax = plt.subplots()
# 先绘制你的数据(这里用示例曲线代替)
ax.plot([1, 2, 3, 4], [2, 4, 1, 3])

# 隐藏x轴的刻度线和标签:bottom=False藏刻度线,labelbottom=False藏标签
ax.tick_params(axis='x', which='both', bottom=False, labelbottom=False)
# 隐藏y轴的刻度线和标签:left=False藏刻度线,labelleft=False藏标签
ax.tick_params(axis='y', which='both', left=False, labelleft=False)

# 开启网格,此时网格会基于原刻度位置生成,完全不受影响
ax.grid(True)

plt.show()

这个方法的好处是不需要手动指定网格位置,完全沿用Matplotlib默认的刻度逻辑,省心又高效。

方法二:手动指定网格线位置

如果你想自定义网格的位置,不依赖默认刻度,也可以用这个思路:先清空主刻度,然后手动设置次要刻度的位置,再开启次要刻度的网格:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [2, 4, 1, 3])

# 移除默认的主刻度
ax.set_xticks([])
ax.set_yticks([])

# 手动指定次要刻度的位置(也就是你想要的网格线位置)
ax.set_xticks([1, 2, 3, 4], minor=True)
ax.set_yticks([1, 2, 3, 4], minor=True)
# 开启次要刻度对应的网格
ax.grid(which='minor')

plt.show()

这种方式适合你需要完全自定义网格间距的场景,灵活性更高。

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

火山引擎 最新活动