2014-07-07 20 views
6

ho una serie di X-asse etichette degli assi che ho messo su un terreno utilizzando:colori matplotlib diversi per ogni etichetta asse

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) 

Ora voglio per colorare ogni singola etichetta in base a ciò l'etichetta è. Per esempio: voglio applicare la regola "colore dell'etichetta rosso se 1 o blu se 0", qualcosa di simile:

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

ma che non è valida. C'è un modo per riuscirci?

risposta

10

È possibile eseguire questa operazione iterando sulle etichette x-tick e impostando il loro colore sul colore desiderato.

Ecco un esempio di ciò, utilizzando il frammento di codice.

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

malato, grazie! lavorato. – Tommy

Problemi correlati