Creación de gráficos de barras en Python

Tengo un par de problemas con el gráfico de barras que estoy tratando de crear en python. Mi código para el gráfico se ve así:

import matplotlib matplotlib.use('Agg') from pylab import * import calendar def webshow(img): savefig(img,dpi=500) print 'Content-Type: text/html\n' print '' genres = [] n = 0 for c in sorted_list: genres.append(sorted_list[n][0]) n += 1 grosses = [] a = 0 for c in sorted_list: grosses.append(sorted_list[a][1]) a += 1 clf() bar(arange(len(grosses)),grosses) xticks( arange(len(genres)),genres, rotation=80) webshow("barchart.png") 

Mi gráfico se ve así:

un gato ocupado http://28.media.tumblr.com/tumblr_ltk9v6xShD1r5te58o1_500.png

Básicamente mi principal problema es que los valores están en decimales con notación científica. Quiero presentarlos en millones si es posible. Además, no estoy seguro de cómo hacerlo para que los géneros no queden aislados en la parte inferior. ¡Gracias por cualquier ayuda!

En primer lugar, usaría un objeto de figure para trabajar: esto hace que sea más fácil construir la ttwig a tu gusto. Para construir su gráfica, lo siguiente debe hacer:

 fig = plt.figure() fig.subplots_adjust(bottom=0.2) # Remark 1 ax = fig.add_subplot(111) ax.bar(arange(len(grosses)), grosses) ax.ticklabel_format(style='plain') # Remark 2 ax.set_xticks(arange(len(genres))) ax.set_xticklabels(genres, rotation=80) savefig('barchart.png', dpi=500) 

Junto con los siguientes comentarios:

  1. Esto ajusta el tamaño de su imagen, en este caso, amplía la parte inferior para poder adaptarse a sus tags. En la mayoría de los casos, usted conoce aproximadamente los datos que va a ingresar, por lo que debería ser suficiente. Si está usando matplotlib versión 1.1 o superior, puede usar la función tight_layout para hacerlo automáticamente por usted. La alternativa es calcular el tamaño necesario por usted mismo basándose en los cuadros delimitadores de todas las tags de los ejes como se muestra aquí , pero necesita un procesador para que esto pueda determinar los tamaños de todas las tags.
  2. Al especificar el formato de la etiqueta (utilizando sci o plain ), puede cambiar la representación de los valores. Cuando se usa el plain , solo se representará el valor tal como está. Consulte la documentación sobre esta función para obtener más información. Tenga en cuenta que también puede usar el set_yticklabels de text la función set_yticklabels para controlar aún más el formato (por supuesto, esa función también está disponible para el eje x).