如何一次设置轴的所有方面的颜色?

时间:2013-12-27 16:09:01

标签: python colors matplotlib axes

我想将主要和次要刻度,刻度标签和轴本身的颜色设置为相同的颜色,但我想出的唯一方法就是

fig, ax_a_mj = matplotlib.pyplot.subplots()

ax_a_mj.spines['bottom'].set_color('r')
ax_a_mj.tick_params(axis='x', colors='r')
ax_a_mj.tick_params(axis='x', colors='r', which='minor')
ax_a_mj.xaxis.label.set_color('r')

单一陈述是否无法做到这一点?

我想要做所有轴的情况怎么样,我有四个:

fig, ax_a_mj = matplotlib.pyplot.subplots()
ax_a_me = ax_a_mj.twinx()
ax_p_mj = ax_a_mj.twiny()

ax_a_mj.spines['bottom'].set_color('r')
ax_a_mj.spines['left'].set_color('r')
ax_a_mj.spines['right'].set_color('r')
ax_a_mj.spines['top'].set_color('r')
ax_a_mj.tick_params(axis='x', colors='r', which='both')
ax_a_mj.tick_params(axis='y', colors='r', which='both')
ax_p_mj.tick_params(axis='x', colors='r', which='both')
ax_a_me.tick_params(axis='y', colors='r', which='both')
ax_a_mj.xaxis.label.set_color('r')
ax_a_mj.yaxis.label.set_color('r')
ax_p_mj.xaxis.label.set_color('r')
ax_a_me.yaxis.label.set_color('r')

1 个答案:

答案 0 :(得分:1)

如果你这么做很多,那就写下你自己的辅助函数

def colorize(ax_in, color_in):
    ax_in.spines['bottom'].set_color(color_in)
    ax_in.tick_params(axis='x', colors=color_in, which='both')
    ax_in.xaxis.label.set_color(color_in)

请注意,which可以是'both',它会设置主要和次要刻度(doc)

如果您正在使用很多,可以将其修补到Axes

matplotlib.axes.Axes.my_colorize = colorize

然后

my_ax.my_colorize('r')

应该有用。

正在进行的工作是支持Tony Yu的样式表,第一部分已经合并到主人(https://github.com/matplotlib/matplotlib/pull/2236)。