在 matplotlib rc 中设置刻度线颜色

Ian*_*Ian 4 python plot colors matplotlib

我想编写一个可调用的函数,为所有不同的图统一设置我的 matplotlib rc 参数。到目前为止,它只是我复制到每个文件的一个块,归结为:

import matplotlib as mpl

grey = '#808080'

mpl.rcParams['axes.linewidth'] = 0.3
mpl.rcParams['axes.edgecolor'] = grey
Run Code Online (Sandbox Code Playgroud)

我这样做是为了让轴更细,并通过让其他所有东西都变灰来突出我的数据。但是我找不到在 rc.local 中将刻度边缘颜色设置为灰色的方法。我正在寻找类似的东西

'axes.tickedgecolor'
Run Code Online (Sandbox Code Playgroud)

可悲的是,这似乎不存在。

这里描述了一种不使用 rc 的方法:Elegantly changed the color of a plot frame in matplotlib

希望有人能帮忙,谢谢!

编辑:只是为了澄清:我找到了选项

mpl.rcParams['tick.color'] = '#808080'
Run Code Online (Sandbox Code Playgroud)

但它也会改变刻度标签,我想保持黑色!

Ian*_*Ian 7

好的,我找到了满足我需求的答案的一些解决方法:

import matplotlib as mpl

grey = '#808080'

mpl.rcParams['axes.linewidth'] = 0.3
mpl.rcParams['axes.edgecolor'] = grey
mpl.rcParams['xtick.color'] = grey
mpl.rcParams['ytick.color'] = grey
mpl.rcParams['axes.labelcolor'] = "black"
Run Code Online (Sandbox Code Playgroud)

虽然xtick.color也会更改标签颜色,但您可以在之后覆盖标签颜色。

编辑:不知何故,这只适用于单个情节。对于具有 6 个子图的图形,它不起作用。

Edit2:我无法让它与 rcParams 一起工作,所以我在子绘图例程中更改了刻度

ax.tick_params('both', length=2, width=0.3, which='major', color=grey)
Run Code Online (Sandbox Code Playgroud)

这使它起作用。