给坐标轴/刻度标签上色

21
如何将y轴标签和刻度标签设置为红色?
例如,将“y标签”和0到40的值设置为红色。
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)

fig = plt.figure()
ax = plt.subplot(111)
ax.set_ylabel("y-label")

for i in xrange(5):
    ax.plot(x, i * x, label='$y = %ix$' % i)

ax.legend()

plt.show()
2个回答

29
  label = plt.ylabel("y-label")
  label.set_color("red")

同样地,您可以获取并修改刻度标签:

[i.set_color("red") for i in plt.gca().get_xticklabels()]

在第二种情况下,我通常建议使用for循环,因为在列表推导中分配和返回值被认为是不良实践。 - Tobias P. G.
如果我只想让一个xticklabel有颜色,该怎么办?比如说,突出显示一个xticklabel。 - tvdsluijs
使用列表推导式来进行副作用操作被认为是不符合Python编程规范的。这种操作应该使用for循环来完成,而不是使用推导式。在Python中,使用列表推导式仅用于副作用是否符合Python规范?。推导式的作用是构建一个列表;如果你不需要构建列表,那就不要使用推导式。参考在Python中滥用和过度使用列表推导式和生成器表达式 - undefined

28

当设置xlabel时,可以对其进行着色。

ax.set_xlabel("x-label", color="red")

要设置刻度标签的颜色,可以使用tick_params函数,它可以同时设置刻度标签和刻度线的颜色。


ax.tick_params(axis='x', colors='red')

输入图片描述

另外,可以使用plt.setp仅设置刻度标签的颜色,而不更改刻度的颜色。

plt.setp(ax.get_xticklabels(), color="red")

输入图像描述

请注意,若要更改y轴上的属性,则可以将上述内容中的x替换为y。


1
我想知道为什么在 tick_params 中使用关键字 colors 而不是像其他关键字那样使用 color?(因为我用错单词,刚刚浪费了10分钟来调试) - eric
这里有 tick_params 的文档:https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.axes.Axes.tick_params.html(尽管似乎不完整...字体重量?) - markling

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