如何在 matplotlib 图表的坐标轴上为每个标签使用不同的颜色?

4

在轴上,是否可以对某些标签使用不同的颜色?

import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_yticks([0,1,2])
ax1.set_yticklabels(['red','red', 'blue'], color='blue') 

#What I would like to do
ax1.set_yticklabels(['red','red', 'blue'], colors=['red','red','blue'])  <-- doesn't work

plt.show()

有没有一种方法可以实现我想要的? 轴标签未完全着色
1个回答

7
您可以使用以下方法访问Tick对象的所有属性:
import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_yticks([0,1,2])
ax1.set_yticklabels(['red','red', 'blue'], color='blue') 
colors=['red','red','blue']
for color,tick in zip(colors,ax1.yaxis.get_major_ticks()):
    tick.label1.set_color(color) #set the color property

plt.show()

最后一个周期也可以用来改变其他属性,例如标签的大小:
colors=['red','red','blue']
sizes=[10,20,30]
for color,size,tick in zip(colors,sizes,ax1.yaxis.get_major_ticks()):
    tick.label1.set_color(color) #set the color
    tick.label1.set_size(size) #set the size

上一个示例的输出将是类似于以下内容:

不同大小和颜色


每个元素的大小是否也可以独立更改? - Luis Jose
1
@LuisJose 当然可以:tick.label1.set_size(size),其中 size 随着最后一个周期内的每个 tick 而变化(请参见答案中的新示例)。 - Alvaro Fuentes

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