Matplotlib每个坐标轴标签不同颜色

13

我有一系列X轴刻度标签,通过以下方式将它们放在绘图上:

plt.figure(1)     
ax = plt.subplot(111)
ax.bar(Xs, Ys, color="grey",width=1)
ax.set_xticks([i+.5 for i in range(0,count)])
ax.set_xticklabels(Xlabs, rotation=270)

现在我想根据标签内容对每个标签进行着色。例如: 我想使用规则“如果是1,则将标签着成红色,如果是0,则将标签着成蓝色”,类似于这样:

colors = ['blue','red']
ax.set_xticklabels(Xlabs, rotation=270, color = [colors[i] for i in Xlabs])

但那是无效的。有没有办法我能实现这个?

1个回答

32

您可以通过迭代您的x轴刻度标签并将它们的颜色设置为您想要的颜色来实现此功能。

以下是使用您的代码片段执行此操作的示例。

import numpy as np
import matplotlib.pyplot as plt

count = 3
Xs = np.arange(3)
Ys = np.random.random(3)
Xlabs = ('Blue', 'Red', 'Green')

plt.figure(1)     
ax = plt.subplot(111)
ax.bar(Xs, Ys, color="grey", width=1)
ax.set_xticks([i + .5 for i in range(0, count)])
ax.set_xticklabels(Xlabs, rotation=270)

colors = ['b', 'r', 'g']
for xtick, color in zip(ax.get_xticklabels(), colors):
    xtick.set_color(color)
plt.show()

Result


生病了,谢谢!已经解决了。 - Tommy

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