2010-09-30 7 views
6

Matplotlib tarafından yapılan bir grafikte yalnızca bir çubuğun renginin değiştirilip değiştirilmeyeceğini görmek için googleing'i kullanıyordum. Bu grafiği düşünün: Durumun gerçek olması durumunda tek bir çubuğun renginin nasıl değiştirileceği matplotlib

alt text

en kullanıcı tercihi değerlendirme oluşturmak 10'a kadar değerlendirme 1 ettik ve her biri için bir grafik ettik diyelim. Her değerlendirme için bu erkeklerden biri kazanacak.
Her bir grafik için, kazanan çubuğu farklı bir renkte bırakmak istiyorum, diyelim ki Jim değerlendirmeyi kazandı1. Jim bar kırmızı, diğerleri mavi olur.

Ben değerlere sahip bir sözlük var, böyle bir şey ne yapmaya çalıştığım oldu:

for value in dictionary.keys(): # keys are the names of the boys 
    if winner == value: 
     facecolor = 'red' 
    else: 
     facecolor = 'blue' 

ax.bar(ind, num, width, facecolor=facecolor) 

Herkes bunu yapmanın bir yolunu bilir?

cevap

17

:) önceden

Teşekkür Sen color yerine facecolor kullanmak gerekir. Ayrıca skaler değer yerine renk listesi de belirtebilirsiniz. senin örneğin Yani, örneğin color=['r','b','b','b','b']

,

import numpy as np 
import matplotlib.pyplot as plt 

fig = plt.figure() 
ax = fig.add_subplot(111) 

N = 5 
ind = np.arange(N) 
width = 0.5 
vals = [1,2,3,4,5] 
colors = ['r','b','b','b','b'] 
ax.barh(ind, vals, width, color=colors) 

plt.show() 

istediğini gösteren bir tam örnektir olabilir.

colors = [] 
for value in dictionary.keys(): # keys are the names of the boys 
    if winner == value: 
     colors.append('r') 
    else: 
     colors.append('b') 

bar(ind,num,width,color=colors) 
+0

Aslında bunu da işe bir çubuk grafikte facecolor kullanmaktır:

Yorumunuzu cevaplamak için. Ama yine de renk değiştirmeyi denedim ve sorun o kadar da değil. – pavid

+0

Ah tamam, daha önce hiç yüz boya kullanmamıştım, benim hatam. Ama rengi bir liste olarak kullanabilirsiniz, yüz renginin aynı şekilde çalıştığından emin değilim. – GWW

+0

Bu güzel bir çözüm olacak ama sorun kırmızı çubuk değişebilir. Örnekte çocukları kullanıyorum, böylece kazanan John ve diğer zamanlar Will olabilir. Grafiği otomatik olarak yapıyorum, yani değerlendirme1'i seçerseniz, örneğin kazanan Peter ise ama değerlendirme 8'de kazanan Simon olabilir. – pavid

İlgili konular