matplotlib每个轴标签的颜色不同

Tom*_*mmy 7 matplotlib python-3.x

我有一系列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)
Run Code Online (Sandbox Code Playgroud)

现在我想根据标签的颜色为每个单独的标签着色.例如:我想应用规则"如果为1则将标签着色为红色,如果为0则为蓝色",如下所示:

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

但那是无效的.有什么办法可以实现吗?

tbe*_*lay 17

您可以通过迭代x-tick标签并将其颜色设置为所需的颜色来完成此操作.

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

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()
Run Code Online (Sandbox Code Playgroud)

结果