2012-04-29 12 views
16
import matplotlib.pyplot as plt 

gridnumber = range(1,4) 

b1 = plt.bar(gridnumber, [0.2, 0.3, 0.1], width=0.4, 
       label="Bar 1", align="center") 

b2 = plt.bar(gridnumber, [0.3, 0.2, 0.2], color="red", width=0.4, 
       label="Bar 2", align="center") 


plt.ylim([0,0.5]) 
plt.xlim([0,4]) 
plt.xticks(gridnumber) 
plt.legend() 
plt.show() 

Actualmente b1 y b2 se superponen entre sí. ¿Cómo puedo plotearlos separado de este modo:Cómo graficar gráficos de barras con las mismas coordenadas X una al lado de la otra

enter image description here

Respuesta

22

Hay una example en el sitio matplotlib. Básicamente, solo cambia los valores de x por width. Aquí está el bit relevante:

import numpy as np 
import matplotlib.pyplot as plt 

N = 5 
menMeans = (20, 35, 30, 35, 27) 
menStd = (2, 3, 4, 1, 2) 

ind = np.arange(N) # the x locations for the groups 
width = 0.35  # the width of the bars 

fig = plt.figure() 
ax = fig.add_subplot(111) 
rects1 = ax.bar(ind, menMeans, width, color='royalblue', yerr=menStd) 

womenMeans = (25, 32, 34, 20, 25) 
womenStd = (3, 5, 2, 3, 3) 
rects2 = ax.bar(ind+width, womenMeans, width, color='seagreen', yerr=womenStd) 

# add some 
ax.set_ylabel('Scores') 
ax.set_title('Scores by group and gender') 
ax.set_xticks(ind + width/2) 
ax.set_xticklabels(('G1', 'G2', 'G3', 'G4', 'G5')) 

ax.legend((rects1[0], rects2[0]), ('Men', 'Women')) 

plt.show() 
4

A veces puede ser complicado encontrar el ancho correcto de la barra. Usualmente uso este np.diff para encontrar la dimensión correcta.

import numpy as np 
import matplotlib.pyplot as plt 

#The data 
womenMeans = (25, 32, 34, 20, 25) 
menMeans = (20, 35, 30, 35, 27) 
indices = [5.5,6,7,8.5,8.9] 
#Calculate optimal width 
width = np.min(np.diff(indices))/3 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.bar(indices-width,womenMeans,width,color='b',label='-Ymin') 
ax.bar(indices,menMeans,width,color='r',label='Ymax') 
ax.set_xlabel('Test histogram') 
plt.show() 

Este es el resultado:

enter image description here

Cuestiones relacionadas