2012-09-11 24 views
5

Estoy usando Matplotlib para graficar la lista de flotadores. Si mi lista tiene 100 flotantes, el gráfico muestra los colores adecuados. Pero si la lista tiene 785 flotantes, entonces solo muestra el color negro. Aquí está el código.Matplotlib: ¿por qué el color de la línea del gráfico de barras es negro?

import numpy as np 
import matplotlib.pyplot as plt 
import Image 

Consensus = [] 
Prediction = [] 
Final = [] 
for line in open('1.out').readlines(): 
    words = line.split() 
    Consensus.append(float(words[10])) 
    Prediction.append(int(words[11])) 

for i,j in zip(Consensus,Prediction): 
    Final.append(i*j) 

max_score = 3 
length = 785 
ind = np.arange(length) # the x locations for the groups 
width = 1  # the width of the bars: can also be len(x) sequence 

p1 = plt.bar(ind, Consensus, width, color='red') 
p2 = plt.bar(ind, Final, width, color='blue') 

plt.ylabel('Scores') 
plt.title('Scores by group and gender') 
plt.xticks(np.arange(0,length,50)) 
plt.yticks(np.arange(0,max_score,0.2)) 
plt.savefig('testplot.png') 
Image.open('testplot.png').save('testplot.jpg','JPEG') 

Esta es la imagen del programa cuando la lista tiene una longitud de 785. This is the picture of the program when the list is 785 in length.

Cuando la lista tiene 99 caracteres. This is when the the list is 99 in length.

El archivo está disponible aquí - http://pastebin.com/HhPhgPDG

Puede cambiar simplemente copiar las primeras 100 líneas de este archivo para comprobar si el otro caso. Debe cambiar la variable de longitud por el número de líneas en el archivo.

Gracias.

Respuesta

24

Los bordes de sus barras son negros. Es posible que cuando tenga tantas barras, se vuelvan muy angostas y los bordes se junten, de modo que solo vea los bordes y no el interior de color. Intenta acercar tu gráfico para ver si los colores están ahí. También puede pasar un argumento edgecolor='none' al bar para eliminar los bordes.

1

Sus barras se vuelven tan densas que solo los bordes quedan visibles. Como son negros, ves principalmente negro. Dos formas posibles de resolver este:

a) aumentar el ancho de las barras

b) eliminar los bordes de las barras de

Cuestiones relacionadas