在对数刻度轴上设置matplotlib刻度的颜色

4 投票
1 回答
2522 浏览
提问于 2025-04-17 18:10

根据在matplotlib中改变图表坐标轴、刻度和标签颜色的建议,我成功地设置了图表的边框、标签、数字和刻度的颜色,使用了以下代码:

ax.spines['left'].set_color('#FF9000')
ax.yaxis.label.set_color('#FF9000')
ax.tick_params(axis='y', colors='#FF9000')

但是,当我把图表的坐标轴设置为对数刻度时,刻度又变回黑色了。

比如说:

ax.set_yscale('log')
ax.spines['left'].set_color('#FF9000')
ax.yaxis.label.set_color('#FF9000')
ax.tick_params(axis='y', colors='#FF9000') <-- now only half works

这段代码可以把数字显示成我想要的颜色(所以我知道这个命令还是有效的),但对刻度没有影响。

有没有办法设置对数刻度的刻度颜色呢?

1 个回答

8

在我的系统上,这个运行得很好(和当前的git主分支非常接近):

你只需要添加一个参数 which='both' (文档)

figure()
ax = gca()

ax.set_yscale('log')
ax.spines['left'].set_color('#FF9000')
ax.yaxis.label.set_color('#FF9000')

ax.tick_params(axis='y', colors='#FF9000', width=5, which='both')

我把刻度线加粗了,这样颜色就更容易看了。

在对数刻度中,小刻度线是次刻度,默认情况下 tick_params 只会改变主刻度线,你只需要告诉它同时处理这两种刻度,或者分别处理每种(主刻度和次刻度)。

撰写回答