Saltar al contenido principal

Diagrama de barras Python: Domina las técnicas básicas y las más avanzadas

Crea gráficos de barras destacados con Matplotlib, Seaborn, Plotly, Plotnine y Pandas. Explora los tipos de gráficos de barras, desde simples barras verticales y horizontales hasta diseños agrupados y apilados más complejos.
Actualizado 14 feb 2025  · 7 min de lectura

En este artículo, te daré una vuelta por los gráficos de barras en Python utilizando las bibliotecas más conocidas: Matplotlib, Seaborn, Plotly, Plotnine y Pandas. Puedes echar un vistazo a los elementos visuales y elegir la biblioteca que más te guste. Para cada método, empezaré con los aspectos básicos de la creación de gráficos de barras sencillos, y luego pasaré gradualmente a las técnicas de personalización.

Seré tan exhaustivo y claro como pueda, pero recuerda que en el análisis y la ciencia de datos, los gráficos de barras son sólo una cosa. Para tener una visión más amplia y practicar con conjuntos de datos reales, obtener una certificación muy codiciada e iniciar una carrera en este campo, matricúlate hoy mismo en nuestra carrera de Científico de Datos Asociado en Python.

Aprende Python desde cero

Domina Python para la ciencia de datos y adquiere habilidades muy demandadas.
Empieza a aprender gratis

Formas de hacer un diagrama de barras en Python 

Veamos cómo crear y personalizar gráficos de barras utilizando algunas de las bibliotecas más populares de Python. Cada biblioteca ofrece funciones únicas y distintos niveles de personalización.

Crea un gráfico de barras con Matplotlib

Empezaré con Matplotlib, que es una biblioteca de trazado fundamental en Python que tiene muchas opciones de personalización.

Gráficos de barras básicos

Para empezar a utilizar Matplotlib, tienes que importar las bibliotecas necesarias. El módulo pyplot de Matplotlib proporciona la funcións para crear gráficos. En este ejemplo, utilizaremos algunos datos de muestra que muestran el número de personas que prefieren diferentes bibliotecas de visualización. Aquí, la lista library contiene los nombres de las bibliotecas, que aparecen como etiquetas en el eje x, y la lista chosen_by contiene el número correspondiente de entusiastas, que aparecen como alturas de barra en el eje y.

import matplotlib.pyplot as plt
# Number of preferences for different libraries
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']
chosen_by = [2500, 1800, 3000, 2200]

Crear un gráfico de barras verticales implica llamar a la función plt.bar() con los nombres de las bibliotecas y los datos de las preferencias. Elijo el color como skyblue. Las funciones plt.xlabel(), plt.ylabel() y plt.title() añaden etiquetas a los ejes x e y y establecen un título para el gráfico. Por último, plt.show() muestra el gráfico.

# Vertical Bar Plot
plt.bar(library, chosen_by, color='skyblue')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
plt.show()

simple gráfico de barras en Python con Matplotlib

Del mismo modo, puedes crear un gráfico de barras horizontales utilizando la función plt.barh(). Para ello, utilizaré un color verde claro para las barras.

# Horizontal Bar Plot
plt.barh(library, chosen_by, color='lightgreen')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
plt.show()

Gráfico de barras en Python con Matplotlib

Personalizaciones avanzadas

Matplotlib permite una amplia gama de personalizaciones, como añadir anotaciones y personalizar las etiquetas, títulos y leyendas de los ejes. Por ejemplo, puedes añadir anotaciones a cada barra utilizando la función plt.text(), que coloca el texto en las coordenadas especificadas.

plt.bar(library, chosen_by, color='skyblue')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')

# Adding annotations
for i, value in enumerate(chosen_by):
    plt.text(i, value + 5, str(value), ha='center')
plt.show()

gráfico de barras con Matplotlib

En el código anterior, plt.text() se utiliza para mostrar el número de entusiastas encima de cada barra. La función enumerate() proporciona el índice y el valor de cada barra, para que el texto se sitúe correctamente.

Gráficos de barras agrupadas y apiladas

Para crear gráficos de barras agrupadas y apiladas con Matplotlib, puedes utilizar parámetros adicionales para representar varias categorías, como diferentes regiones o datos demográficos. Supón que tienes datos sobre la popularidad de las bibliotecas de visualización en las distintas regiones. Para los gráficos de barras agrupadas, define conjuntos de datos separados para cada región y utiliza bar_width para controlar el espaciado y la alineación de las barras, colocando cada grupo uno al lado del otro para facilitar la comparación.

import numpy as np

# Define library names
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']

# Number of Enthusiasts for different regions
enthusiasts_north = [2000, 1500, 2500, 2000]
enthusiasts_south = [1500, 1300, 2000, 1800]
bar_width = 0.35
x = np.arange(len(library))

# Grouped Bar Plot
plt.bar(x - bar_width/2, enthusiasts_north, bar_width, label='North Region', color='skyblue')
plt.bar(x + bar_width/2, enthusiasts_south, bar_width, label='South Region', color='lightgreen')

# Adding labels and title
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Regional Preferences for Visualization Libraries (Grouped)')
plt.xticks(x, library)
plt.legend(title='Regions')
plt.show()

gráfico de barras agrupado en Python con Matplotlib

En este ejemplo, la línea x = np.arange(len(library)) crea una matriz de posiciones para las barras. La función plt.bar() se utiliza dos veces para crear las barras de cada región, y la función plt.xticks() establece las etiquetas en el eje x. La función plt.legend() muestra una leyenda para diferenciar las regiones.

Para un gráfico de barras apiladas, puedes utilizar el parámetro bottom para apilar un conjunto de datos sobre otro. Así es como puedes visualizar el número de entusiastas de diferentes regiones apilados para cada biblioteca.

# Define library names
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']

# Number of Enthusiasts for different regions
enthusiasts_north = [2000, 1500, 2500, 2000]
enthusiasts_south = [1500, 1300, 2000, 1800]
x = np.arange(len(library))

# Stacked Bar Plot
plt.bar(x, enthusiasts_north, label='North Region', color='skyblue')
plt.bar(x, enthusiasts_south, bottom=enthusiasts_north, label='South Region', color='lightcoral')

# Adding labels and title
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Regional Preferences for Visualization Libraries (Stacked)')
plt.legend()
plt.show()

Gráfico de barras apilado en Python con Matplotlib

En este gráfico de barras apiladas, enthusiasts_south representa los datos de los entusiastas de la región Sur, mientras que enthusiasts_north se utiliza como dato base para la región Norte. La función plt.bra() se llama una vez para crear las barras de la región Norte, y otra vez para apilar encima las barras de la región Sur.

Puedes consultar nuestro curso sobre Introducción a la Visualización de Datos con Matplotlib para una explicación más extensa sobre cómo utilizar la biblioteca Matplotlib Python. También está nuestra Matplotlib Cheat Sheet, que desglosa el proceso en seis pasos básicos.

Crear gráficos de barras con Seaborn 

Seaborn es una biblioteca de visualización construida sobre Matplotlib que simplifica la creación de gráficos de barras muy atractivos.

Gráficos de barras básicos

La función barplot() de Seaborn facilita la creación de gráficos de barras básicos con un código mínimo. Primero, importa la biblioteca Seaborn y crea un diccionario.

import seaborn as sns
data = {'Library': library, 'Chosen by': chosen_by}

A continuación, utiliza la función sns.barplot() para crear el diagrama de barras, especificando las variables x e y y la fuente de datos. Aquí estoy utilizando la paleta de colores viridis.

sns.barplot(x='Library', y='Chosen by', data=data, palette='viridis')
plt.title('Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

simple gráfico de barras en Python con Seaborn

Puedes decidir no añadir un valor para palette y obtendrás un color uniforme en tu gráfico o, mejor aún, asignar un color al gráfico de barras. En este caso, utilizaré un hexcódigo:

sns.barplot(x='Library', y='Chosen by', data=data, color=’#5EB1FF’)
plt.title('Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

Gráfico de barras en Python con Seaborn

Personalización avanzada

Por supuesto, Seaborn también permite amplias opciones de personalización, incluidos colores y anotaciones. Por ejemplo, puedes añadir anotaciones al gráfico de barras de forma similar a como lo hacías en Matplotlib.

# Customized Bar Plot
sns.barplot(x='Library', y='Chosen by', data=data, palette='viridis')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')

# Adding annotations
for i, value in enumerate(chosen_by):
    plt.text(i, value + 5, str(value), ha='center')
plt.show()

Gráfico de barras en Python con Seaborn

En este ejemplo, el parámetro palette='viridis' cambia la paleta de colores de las barras, y la función plt.text() añade anotaciones a cada barra.

Puedes consultar nuestro curso Introducción a la Visualización de Datos con Seaborn para obtener muchos más detalles. Para que tu gráfico de barras Seaborn tenga un aspecto especialmente bonito, utiliza nuestra Paleta de colores Seaborn: Guía rápida para elegir colores para obtener algunas buenas ideas. 

Crear gráficos de barras con Plotly

La siguiente es Plotly, una biblioteca conocida por crear visualizaciones interactivas y dinámicas, incluidos gráficos de barras.

Gráficos de barras básicos

Crear un gráfico de barras básico con Plotly implica utilizar el módulo graph_objects. Podemos importar el módulo necesario y crear un gráfico de barras utilizando un color azul cielo para las barras.

import plotly.graph_objects as go
fig = go.Figure(go.Bar(x=library, y=chosen_by, marker_color='skyblue'))
fig.update_layout(title='Which Visualization Library Do People Prefer?', xaxis_title='Visualization Library', yaxis_title='Number of Enthusiasts')
fig.show()

simple gráfico de barras en Python con Plotly

Personalización avanzada

Plotly proporciona formas de mejorar la interactividad y el aspecto de los gráficos de barras. Por ejemplo, puedes añadir anotaciones a las barras utilizando la función fig.add_annotation().

fig = go.Figure(go.Bar(x=library, y=chosen_by, marker_color='skyblue'))
fig.update_layout(title='Which Visualization Library Do People Prefer?', xaxis_title='Visualization Library', yaxis_title='Number of Enthusiasts')

# Adding annotations
for i, value in enumerate(chosen_by):
    fig.add_annotation(x=library[i], y=value, text=str(value), showarrow=False, yshift=10)
fig.show()

Gráfico de barras en Python con Plotly

Gráficos de barras dinámicos e interactivos

Plotly puede crear gráficos de barras dinámicos que se actualizan en tiempo real, por lo que son ideales para los cuadros de mando. Con Plotly Express, una interfaz de alto nivel para Plotly, puedes crear gráficos de barras interactivos con un código mínimo.

import plotly.express as px

# Using a sample dataset from Plotly
df = px.data.gapminder().query("year == 2007")
fig = px.bar(df, x='continent', y='pop', color='continent', hover_name='country', title='Population by Continent in 2007')
fig.show()

Gráfico de barras interactivo en Python con Plotly

En este ejemplo, la función px.data.gapminder() carga un conjunto de datos de muestra de Plotly. La función px.bar() crea un gráfico de barras interactivo con las variables x e y, el color, el nombre hover y el título especificados. Tenemos un curso detallado aquí en DataCammp si quieres ver más: Introducción a la Visualización de Datos con Plotly

Crear gráficos de barras con Plotnine

Plotnine es una implementación de la gramática de los gráficos en Python, inspirada en ggplot2 en R. Permite una forma declarativa de crear gráficos complejos combinando distintos elementos de gráficos.

Gráficos de barras básicos

Para empezar con Plotnine, importa las bibliotecas necesarias y crea un Marco de datos. A continuación, define un objeto ggplot, añade una capa geom_bar y especifica la estética.

from plotnine import ggplot, aes, geom_bar, labs

import pandas as pd
# Number of preferences for different libraries
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
                     'Chosen by': [2500, 1800, 3000, 2200]})

# Basic Bar Plot
ggplot(data, aes(x='Library', y='Chosen by')) + geom_bar(stat='identity', fill='skyblue') + labs(title='Which Visualization Library Do People Prefer?', x='Visualization Library', y='Number of Enthusiasts')

simple gráfico de barras en Python con Plotnine

En este ejemplo, aes(x='Library', y='Chosen by') configura la estética x e y para el gráfico. La parte geom_bar(stat='identity', fill='skyblue') crea un gráfico de barras con un color de relleno azul cielo.

Personalización avanzada

Puedes personalizar utilizando el enfoque por capas de Plotnine. Puedes añadir anotaciones, etiquetas de ejes, títulos y leyendas.

from plotnine import ggplot, aes, geom_bar, geom_text, labs
# Creating our Pandas DataFrame
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
                     'Chosen by': [2500, 1800, 3000, 2200]})

# Basic Bar Plot with labels
(ggplot(data, aes(x='Library', y='Chosen by')) 
 + geom_bar(stat='identity', fill='skyblue')
 + geom_text(aes(label='Chosen by'), va='bottom', size=10, nudge_y=5)  # Adds labels on top of bars
 + labs(title='Which Visualization Library Do People Prefer?', x='Visualization Library', y='Number of Enthusiasts'))

Gráfico de barras en Python con Plotnine

Gráficos de barras agrupadas y apiladas 

Plotnine también admite gráficos de barras agrupadas y apiladas. Para los gráficos de barras agrupadas, primero tienes que definir una variable categórica para la agrupación.

# Number of preferences for different libraries in different regions
data = pd.DataFrame({'Library': ['Matplotlib', 'Plotly', 'Plotnine', 'Seaborn'] * 2,
                     'Chosen by': [2000, 1500, 2500, 2000, 1500, 1300, 2000, 1800],
                     'Region': ['North', 'North', 'North', 'North', 'South', 'South', 'South', 'South']})

# Grouped Bar Plot
(ggplot(data, aes(x='Library', y='Chosen by', fill='Region'))
 + geom_bar(stat='identity', position='dodge')
 + labs(title='Regional Preferences for Visualization Libraries (Grouped)', x='Visualization Library', y='Number of Enthusiasts'))

gráfico de barras agrupadas en Python con Plotnine

Para los gráficos de barras apiladas, puedes utilizar position = 'stack'.

# Stacked Bar Plot
(ggplot(data, aes(x='Library', y='Chosen by', fill='Region'))
 + geom_bar(stat='identity', position='stack')
 + labs(title='Regional Preferences for Visualization Libraries (Stacked)', x='Visualization Library', y='Number of Enthusiasts'))

Gráfico de barras apilado en Python con Plotnine

Observa cómo en estos ejemplos, position = 'dodge' crea barras agrupadas, mientras que position = 'stack' apila las barras.

Crear gráficos de barras con Pandas

Por último, pero no por ello menos importante, están los pandas. Pandas proporciona una forma cómoda de crear gráficos de barras directamente a partir de DataFrames, por lo que es una opción rápida y sencilla para gráficos básicos.

Gráficos de barras básicos

Para crear un gráfico de barras en Pandas, puedes utilizar la función plot.bar() sobre un DataFrame. 

import pandas as pd
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
                     'Chosen by': [2500, 1800, 3000, 2200]})

A continuación, crea un diagrama de barras utilizando plot.bar().

# Basic Bar Plot
data.plot.bar(x='Library', y='Chosen by', color='skyblue', title='Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

simple gráfico de barras en Python con Pandas

Personalización avanzada

Pandas permite personalizar los gráficos de barras mediante parámetros adicionales y la integración con Matplotlib.

# Customized Bar Plot
ax = data.plot.bar(x='Library', y='Chosen by', color='skyblue', title='Which Visualization Library Do People Prefer?')
ax.set_xlabel('Visualization Library')
ax.set_ylabel('Number of Enthusiasts')

# Adding annotations
for i in ax.containers:
    ax.bar_label(i, label_type='edge')
plt.show()

Gráfico de barras en Python con Pandas

En este ejemplo, ax.bar_label(i, label_type='edge') añade anotaciones a las barras, mostrando el número encima de cada barra.

Gráficos de barras agrupadas y apiladas

Crear gráficos de barras agrupadas y apiladas en Pandas es sencillo. Para los gráficos de barras agrupadas, tienes que pivotar el Marco de datos para tener columnas separadas para cada grupo.

# Number of preferences for different libraries in different regions
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
                     'North Region': [2000, 1500, 2500, 2000],
                     'South Region': [1500, 1300, 2000, 1800]})

# Grouped Bar Plot
data.plot.bar(x='Library', y=['North Region', 'South Region'], title='Regional Preferences for Visualization Libraries (Grouped)')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

gráfico de barras agrupadas en Python con Pandas

Para los gráficos de barras apiladas, utiliza stacked=True.

# Stacked Bar Plot
data.plot.bar(x='Library', y=['North Region', 'South Region'], stacked=True, title='Regional Preferences for Visualization Libraries (Stacked)')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()

Gráfico de barras apilado en Python con Pandas

Buenas prácticas para diseñar gráficos de barras de Python eficaces

Crear diagramas de barras es sencillo, pero diseñar diagramas de barras eficaces y perspicaces requiere prestar atención a los detalles. Las siguientes directrices te ayudarán a crear gráficos de barras que comuniquen eficazmente la historia de tus datos.

  • Evitar errores comunes: Cuando diseñes diagramas de barras, evita sobrecargarlos de información para que sean claros y eficaces. Limítate a lo esencial para evitar el desorden. Utiliza una escala coherente en todos los ejes. Asegúrate de que el eje empieza en cero para evitar engañar a los espectadores con diferencias exageradas.
  • Elegir colores y reflejos: Selecciona colores que añadan significado a tus datos, como el rojo para los valores negativos o el verde para los positivos. Mantén un esquema de colores coherente en todas las tramas relacionadas para ayudar al lector a seguir la narración. Utiliza el color para llamar la atención sobre las ideas importantes.
  • Ordenar las barras para una mayor claridad: Organiza las barras de forma lógica según el contexto de los datos, como cronológicamente para los datos basados en el tiempo, o en orden descendente/ascendente para resaltar las tendencias. Agrupa las barras relacionadas y utiliza el color o el espaciado para separar los grupos.

Conclusión

Dominar la creación y personalización de gráficos de barras es una habilidad esencial para cualquier profesional de los datos. Siguiendo las directrices y las mejores prácticas descritas en este artículo, puedes crear gráficos de barras claros, informativos y visualmente atractivos que comuniquen eficazmente tus datos. Esto te permitirá presentar tus datos de forma más eficaz y tomar decisiones mejor informadas.

Si quieres seguir practicando tus habilidades de visualización de datos en Python, consulta nuestro curso Introducción a Python para la Ciencia de Datos, que proporciona un punto de partida para principiantes, o bien consulta nuestro curso de habilidades de Programación en Python, que ofrece una ruta de aprendizaje completa para dominar Python.


Samuel Shaibu's photo
Author
Samuel Shaibu
LinkedIn

Escritora y profesional de los datos con experiencia a la que le apasiona capacitar a los aspirantes a expertos en el espacio de los datos.

Preguntas frecuentes sobre el diagrama de barras de Python

¿Qué es un diagrama de barras en Python y por qué es útil?

Un diagrama de barras representa datos categóricos con barras rectangulares, cuya longitud o altura corresponde al valor de la categoría. Es útil para comparar categorías, visualizar distribuciones y detectar tendencias o valores atípicos.

¿Cómo elijo entre un diagrama de barras Python vertical u horizontal?

Puedes utilizar un diagrama de barras verticales para etiquetas cortas o fácilmente legibles, mientras que puedes elegir un diagrama de barras horizontales para etiquetas más largas o muchas categorías para evitar el desorden.

¿Cómo personalizo los colores de las barras de mi gráfico?

Puedes personalizar los colores de las barras para que tu parcela sea más atractiva visualmente o para que coincida con un esquema de colores específico. En Matplotlib, utiliza el parámetro color:

plt.bar(categories, values, color=['red', 'green', 'blue'])
plt.show()

¿Cómo puedo utilizar Python para ordenar las barras de mi gráfico de barras?

Ordenar las barras puede ayudar a destacar las categorías más o menos significativas. Puedes ordenar los datos antes de trazarlos:

data = {'Category': ['A', 'B', 'C'], 'Value': [4, 7, 1]}
df = pd.DataFrame(data).sort_values(by='Value', ascending=False)
plt.bar(df['Category'], df['Value'])
plt.show()

¿Puedo crear gráficos de barras interactivos en Python con Plotly?

Sí, Plotly te permite crear gráficos de barras interactivos. Aquí tienes un ejemplo utilizando Plotly Express:

import plotly.express as px
data = {'Category': ['A', 'B', 'C'], 'Value': [4, 7, 1]}
fig = px.bar(data, x='Category', y='Value', title='Interactive Bar Plot')
fig.show()
Temas

Aprende sobre Python y gráficos de barras con DataCamp

Certificación disponible

curso

Introducción a Python

4 hr
6M
Domina los fundamentos del análisis de datos con Python en sólo cuatro horas. Este curso online introducirá la interfaz de Python y explorará paquetes populares.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow