Matplotlib - Gráfico de barras

Un gráfico de barras o gráfico de barras es un gráfico o gráfico que presenta datos categóricos con barras rectangulares con alturas o longitudes proporcionales a los valores que representan. Las barras se pueden trazar vertical u horizontalmente.

Un gráfico de barras muestra comparaciones entre categorías discretas. Un eje del gráfico muestra las categorías específicas que se están comparando y el otro eje representa un valor medido.

La API de Matplotlib proporciona bar()función que se puede utilizar en el uso de estilo MATLAB así como API orientada a objetos. La firma de la función bar () que se utilizará con el objeto axes es la siguiente:

ax.bar(x, height, width, bottom, align)

La función hace un diagrama de barras con el rectángulo limitado de tamaño (x −width = 2; x + width = 2; bottom; bottom + height).

Los parámetros de la función son:

X secuencia de escalares que representan las coordenadas x de las barras. alinear los controles si x es el centro de la barra (predeterminado) o el borde izquierdo.
altura escalar o secuencia de escalares que representan la (s) altura (s) de las barras.
anchura escalar o similar a una matriz, opcional. el ancho (s) de las barras por defecto 0.8
fondo escalar o similar a una matriz, opcional. las coordenadas y de las barras predeterminadas Ninguna.
alinear {'centro', 'borde'}, opcional, 'centro' predeterminado

La función devuelve un objeto contenedor Matplotlib con todas las barras.

A continuación se muestra un ejemplo simple del diagrama de barras de Matplotlib. Muestra el número de estudiantes matriculados en varios cursos ofrecidos en un instituto.

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
ax.bar(langs,students)
plt.show()

Al comparar varias cantidades y al cambiar una variable, es posible que deseemos un gráfico de barras en el que tengamos barras de un color para un valor de cantidad.

Podemos trazar múltiples gráficos de barras jugando con el grosor y las posiciones de las barras. La variable de datos contiene tres series de cuatro valores. La siguiente secuencia de comandos mostrará tres gráficos de barras de cuatro barras. Las barras tendrán un espesor de 0,25 unidades. Cada gráfico de barras se desplazará 0,25 unidades del anterior. El objeto de datos es un multidict que contiene el número de estudiantes aprobados en tres ramas de una escuela de ingeniería durante los últimos cuatro años.

import numpy as np
import matplotlib.pyplot as plt
data = [[30, 25, 50, 20],
[40, 23, 51, 17],
[35, 22, 45, 19]]
X = np.arange(4)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(X + 0.00, data[0], color = 'b', width = 0.25)
ax.bar(X + 0.25, data[1], color = 'g', width = 0.25)
ax.bar(X + 0.50, data[2], color = 'r', width = 0.25)

El gráfico de barras apiladas apila barras que representan diferentes grupos una encima de la otra. La altura de la barra resultante muestra el resultado combinado de los grupos.

El parámetro inferior opcional del pyplot.bar()La función le permite especificar un valor inicial para una barra. En lugar de correr de cero a un valor, irá desde abajo hasta el valor. La primera llamada a pyplot.bar () traza las barras azules. La segunda llamada a pyplot.bar () traza las barras rojas, con la parte inferior de las barras azules en la parte superior de las barras rojas.

import numpy as np
import matplotlib.pyplot as plt
N = 5
menMeans = (20, 35, 30, 35, 27)
womenMeans = (25, 32, 34, 20, 25)
ind = np.arange(N) # the x locations for the groups
width = 0.35
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(ind, menMeans, width, color='r')
ax.bar(ind, womenMeans, width,bottom=menMeans, color='b')
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))
ax.set_yticks(np.arange(0, 81, 10))
ax.legend(labels=['Men', 'Women'])
plt.show()