2011-09-14 20 views

Respuesta

38

Creo que esto le apuntan en la dirección correcta:

http://matplotlib.sourceforge.net/examples/pylab_examples/barchart_demo.html.

La parte que más le interesa es:

def autolabel(rects): 
    for rect in rects: 
     height = rect.get_height() 
     plt.text(rect.get_x()+rect.get_width()/2., 1.05*height, '%d'%int(height), 
       ha='center', va='bottom') 

La colocación del texto se determina por la función de la altura, o la altura de la columna, y el número que se pone en la parte superior de cada la columna está escrita por: '% d'% int (altura). Entonces, todo lo que tiene que hacer es crear una matriz de cadenas, llamada 'nombre', que desee en la parte superior de las columnas y repetir. Asegúrese de cambiar el formato para una cadena (% s) y no un doble.

def autolabel(rects): 
# attach some text labels 
    for ii,rect in enumerate(rects): 
     height = rect.get_height() 
     plt.text(rect.get_x()+rect.get_width()/2., 1.02*height, '%s'% (name[ii]), 
       ha='center', va='bottom') 
autolabel(rects1) 

Eso debería hacerlo!

+0

He tratado de entenderlo, pero quiero mostrar una cadena, y aquí es donde me causa problemas. Me equivoqué, pero no puedo modificarlo para adaptarme a mi caso. – GiannisIordanou

+0

Edité mi respuesta original para mostrarle qué cambiar. – cosmosis

+0

@cosmosis La '1.02 * height' realmente no funciona si los valores de y difieren mucho (por ejemplo, min 0 y max 1300). ¿Alguna sugerencia? – tobip

Cuestiones relacionadas