2014-07-07 20 views
6

Mam serię etykiet osi X-osiowych, że stawiam na działce przy użyciu:matplotlib różne kolory dla każdej etykiety osi

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) 

teraz chcę pokolorować każdą poszczególną etykietę na podstawie tego, co jest etykieta. Na przykład: Chcę zastosować regułę „kolor etykiety czerwony czy niebieski 1 lub 0” jeśli coś takiego:

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

Ale to nie jest ważne. Czy mogę to osiągnąć?

Odpowiedz

10

Możesz to zrobić, wykonując iteracje na etykietach x-tick i ustawiając ich kolor na pożądany kolor.

Oto przykład wykonania tego przy użyciu fragmentu kodu.

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

+0

chory, dzięki! pracował. – Tommy

Powiązane problemy