在对数刻度轴上设置matplotlib刻度的颜色
根据在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
只会改变主刻度线,你只需要告诉它同时处理这两种刻度,或者分别处理每种(主刻度和次刻度)。