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

4

按照更改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主分支):

您只需要添加kwarg which='both' (doc)

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只更改主要刻度,您只需要告诉它同时更改或显式地单独更改每个(主要和次要)就可以了。


是的!非常感谢,问题已经解决了。一旦可以,我会接受这个答案。 - Mark Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接