Visualización de datos con Python

Python
Autor/a

Elmer Achalma

Fecha de publicación

10 de mayo de 2025

Fecha de última modificación

4 de enero de 2026

Resumen
Este documento presenta una colección de ejemplos prácticos de visualización de datos utilizando Python y la biblioteca Matplotlib. Se incluyen gráficos de líneas, barras, histogramas, circulares, de caja y combinados, cada uno acompañado de código comentado y optimizado. El objetivo es proporcionar una guía educativa para estudiantes y profesionales interesados en representar datos de manera clara y efectiva, con énfasis en buenas prácticas de diseño y presentación.
Palabras clave

Visualización de datos, Python, Matplotlib, Gráficos estadísticos, Análisis de datos

Grafico de lineas

import numpy as np
import matplotlib.pyplot as plt

# Configurar el tamaño de la figura para mejor visualización
#plt.figure(figsize=(10, 8))

# Datos de consumo de carne bovina (kg por habitante)
consumo_bovino = [22.1, 22.1, 23.1, 23.9, 24.6, 21.7, 23.5, 22.0, 22.5, 23.6, 21.7]
anios_bovino = [2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011]

# Datos de consumo de carne porcina (kg por habitante)
consumo_porcino = [17.9, 19.4, 19.1, 18.3, 19.3, 22.5, 23.5, 25.0, 24.0, 24.4, 25.6]
anios_porcino = [2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011]

# Graficar consumo de carne bovina con marcadores circulares y línea discontinua
plt.plot(anios_bovino, consumo_bovino, marker='o', linestyle='--', color='red', label='Carne Bovina')

# Graficar consumo de carne porcina con marcadores de diamante y línea discontinua
plt.plot(anios_porcino, consumo_porcino, marker='d', linestyle='--', color='blue', label='Carne Porcina')

# Etiquetas de los ejes y título con formato adecuado
plt.xlabel('Año')
plt.ylabel('Consumo (kg por habitante)')
plt.title('Consumo Anual de Carne en Chile (2001-2011)')

# Añadir leyenda en la esquina inferior derecha
plt.legend(loc='lower right')

# Configurar marcas en el eje x para mostrar cada año
plt.xticks(anios_bovino)

# Añadir una cuadrícula para mejorar la legibilidad
plt.grid(True, linestyle='--', alpha=0.7)

# Ajustar el diseño para evitar recortes de etiquetas
plt.tight_layout()

# Guardar la figura en un archivo (opcional, se puede descomentar para usar)
# plt.savefig('consumo_carne_chile.png')

# Mostrar el gráfico
plt.show()
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 200)
y = np.sin(x)

fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()
import numpy as np
import matplotlib.pyplot as plt

r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
fig, ax = plt.subplots(
  subplot_kw = {'projection': 'polar'} 
)
ax.plot(theta, r)
ax.set_rticks([0.5, 1, 1.5, 2])
ax.grid(True)
plt.show()
Figura 1

Gráfico de barras

horizontal

import matplotlib.pyplot as plt

# Configurar el tamaño de la figura para una mejor visualización
#plt.figure(figsize=(10, 8))

# Tipos de legumbres y sus respectivos consumos en kg por habitante en 2001
tipos_legumbres = ["Poroto", "Lenteja", "Garbanzo", "Arveja"]
consumo_legumbres = [2.1, 1.0, 0.3, 0.5]

# Crear un gráfico de barras con color personalizado y borde
plt.bar(tipos_legumbres, consumo_legumbres, color='green', edgecolor='black', alpha=0.7)

# Etiquetas de los ejes y título con formato adecuado
plt.xlabel('Tipos de Legumbres')
plt.ylabel('Consumo (kg por habitante)')
plt.title('Consumo de Legumbres en Chile (2001)')

# Añadir una cuadrícula en el eje y para facilitar la lectura
plt.grid(True, axis='y', linestyle='--', alpha=0.7)

# Ajustar el diseño para evitar recortes de etiquetas
plt.tight_layout()

# Guardar la figura en un archivo (opcional, descomentar para usar)
# plt.savefig('consumo_legumbres_2001.png')

# Mostrar el gráfico
plt.show()

vertical

#plt.figure(figsize=[10,8])
#Consumo de legumbres en el 2001
legumbres=["Poroto","Lenteja","Garbanzo","Arveja"]
consumo=[2.1, 1.0, 0.3, 0.5]

plt.barh(legumbres,consumo)

plt.ylabel("Tipos de legumbre")
plt.xlabel("Consumo (kg/hab)")
plt.title("Consumo de Legumbres en el 2001")
plt.show()

Histograma

import matplotlib.pyplot as plt

# Configurar el tamaño de la figura para una mejor visualización
#plt.figure(figsize=(10, 8))

# Datos de niveles de glucosa (mg/dl)
niveles_glucosa = [52, 54, 55, 57, 56, 57, 54, 59, 60, 57, 52, 62, 64, 68, 64, 72, 77, 80, 
                   76, 79, 81, 85, 88, 84, 89, 92, 85, 92, 94, 93, 92, 99, 100, 105, 106, 107, 109]

# Bordes de los intervalos para el histograma (bins)
intervalos = [50, 60, 70, 80, 90, 100, 110, 120, 130]

# Crear el histograma con color personalizado y bordes
plt.hist(niveles_glucosa, bins=intervalos, color='skyblue', edgecolor='black', alpha=0.7)

# Etiquetas de los ejes y título con formato adecuado
plt.xlabel('Nivel de Glucosa (mg/dl)')
plt.ylabel('Número de Pacientes')
plt.title('Distribución de Niveles de Glucosa en Pacientes')

# Añadir una cuadrícula en el eje y para facilitar la lectura
plt.grid(True, axis='y', linestyle='--', alpha=0.7)

# Ajustar el diseño para evitar recortes de etiquetas
plt.tight_layout()

# Guardar la figura en un archivo (opcional, descomentar para usar)
# plt.savefig('distribucion_glucosa.png')

# Mostrar el gráfico
plt.show()

Grafico circular

import matplotlib.pyplot as plt

# Configurar el tamaño de la figura para una mejor visualización
#plt.figure(figsize=(10, 8))

# Datos de marcas de autos y sus ventas (en alguna unidad, ej. miles de unidades)
marcas_autos = ["Kia", "Toyota", "Nissan", "Suzuki", "Audi"]
ventas = [10.5, 15.3, 14.2, 16.1, 9.8]
# Resaltar la primera marca (Kia) ligeramente
resaltar = [0.1, 0, 0, 0, 0]

# Aplicar un estilo visual predefinido (ggplot)
plt.style.use("ggplot")

# Crear el gráfico de pastel
plt.pie(x=ventas, explode=resaltar, labels=marcas_autos, autopct="%.2f%%", shadow=True, startangle=20)

# Asegurar que el gráfico sea circular
plt.axis=("equal")

# Añadir un título descriptivo
plt.title("Distribución de Ventas de Autos en EE.UU.")

# Añadir una leyenda en la esquina superior izquierda
plt.legend(marcas_autos, loc="upper left")

# Ajustar el diseño para evitar recortes
plt.tight_layout()

# Guardar la figura en un archivo (opcional, descomentar para usar)
# plt.savefig('ventas_autos_eeuu.png')

# Mostrar el gráfico
plt.show()

Grafico de Donut

import matplotlib.pyplot as plt

# Configurar el tamaño de la figura para una mejor visualización
#plt.figure(figsize=(10, 8))

# Datos de marcas de autos y sus ventas (en alguna unidad, ej. miles de unidades)
marcas_autos = ["Kia", "Toyota", "Nissan", "Suzuki", "Audi"]
ventas = [10.5, 15.3, 14.2, 16.1, 9.8]
# Resaltar la primera marca (Kia) ligeramente
resaltar = [0.1, 0, 0, 0, 0]

# Aplicar un estilo visual predefinido (ggplot)
plt.style.use("ggplot")

# Crear el gráfico de pastel (donut chart)
plt.pie(ventas, explode=resaltar, labels=marcas_autos, autopct="%.2f%%", shadow=True, startangle=20)

# Asegurar que el gráfico sea circular
plt.axis=("equal")

# Añadir un título descriptivo
plt.title("Distribución de Ventas de Autos en EE.UU.")

# Añadir una leyenda en la esquina superior izquierda
plt.legend(marcas_autos, loc="upper left")

# Añadir un círculo central para crear el efecto de "donut chart"
circulo_central = plt.Circle(xy=(0, 0), radius=0.75, facecolor="white")
plt.gca().add_artist(circulo_central)

# Ajustar el diseño para evitar recortes
plt.tight_layout()

# Guardar la figura en un archivo (opcional, descomentar para usar)
# plt.savefig('ventas_autos_eeuu_donut.png')

# Mostrar el gráfico
plt.show()

Grafico de cajas

import matplotlib.pyplot as plt

# Configurar el tamaño de la figura para una mejor visualización
#plt.figure(figsize=(10, 8))

# Datos de las edades de los alumnos
edades_alumnos = [12, 13, 12, 17, 16, 15, 14, 15, 15, 16, 14, 12, 15, 16, 14, 12, 16, 17]

# Crear el diagrama de caja con un estilo personalizado
plt.boxplot(edades_alumnos, vert=True, patch_artist=True, 
            boxprops=dict(facecolor='lightblue', edgecolor='black'),
            medianprops=dict(color='red'), whiskerprops=dict(color='black'),
            capprops=dict(color='black'), flierprops=dict(marker='o', color='orange', markersize=8))

# Etiquetas de los ejes y título con formato adecuado
plt.ylabel('Edad (años)')
plt.title('Distribución de Edades de Alumnos de Secundaria')

# Añadir una cuadrícula en el eje y para facilitar la lectura
plt.grid(True, axis='y', linestyle='--', alpha=0.7)

# Configurar las etiquetas del eje x (opcional, ya que solo hay un grupo)
plt.xticks([1], ['Alumnos'])

# Ajustar el diseño para evitar recortes
plt.tight_layout()

# Guardar la figura en un archivo (opcional, descomentar para usar)
# plt.savefig('edades_alumnos_secundaria.png')

# Mostrar el gráfico
plt.show()

Grafico de barras combinadas

import matplotlib.pyplot as plt

# Configurar el tamaño de la figura para una mejor visualización
#plt.figure(figsize=(10, 8))

# Datos de ventas de autos por día (en unidades)
ventas_toyota = [10, 15, 19, 14, 9]
ventas_audi = [15, 25, 27, 24, 28]
dias = [0, 1, 2, 3, 4]  # Posiciones para los días
ancho_barras = 0.5  # Grosor de las barras

# Crear el gráfico de barras apiladas
barras_toyota = plt.bar(dias, ventas_toyota, ancho_barras, label='Toyota', color='skyblue', edgecolor='black')
barras_audi = plt.bar(dias, ventas_audi, ancho_barras, bottom=ventas_toyota, label='Audi', color='salmon', edgecolor='black')

# Configurar las etiquetas del eje x con los días
plt.xticks(dias, ['Día 1', 'Día 2', 'Día 3', 'Día 4', 'Día 5'])

# Etiquetas de los ejes y título con formato adecuado
plt.xlabel('Días')
plt.ylabel('Unidades Vendidas')
plt.title('Ventas de Autos por Día (Toyota vs. Audi)')

# Configurar las marcas del eje y para mayor claridad
plt.yticks([0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50])

# Añadir una cuadrícula en el eje y para facilitar la lectura
plt.grid(True, axis='y', linestyle='--', alpha=0.7)

# Añadir una leyenda para identificar las marcas
plt.legend()

# Ajustar el diseño para evitar recortes
plt.tight_layout()

# Guardar la figura en un archivo (opcional, descomentar para usar)
# plt.savefig('ventas_autos_toyota_audi.png')

# Mostrar el gráfico
plt.show()

Graficos combinados

import matplotlib.pyplot as plt

# Configurar el tamaño de la figura para una mejor visualización
#plt.figure(figsize=(10, 8))

# Datos de vacunación proyectada (en número de pacientes)
vacunacion_proyectada = [250, 120, 270, 560, 450, 280, 550]
# Datos de vacunación real (en número de pacientes)
vacunacion_real = [150, 300, 120, 550, 500, 240, 600]
meses = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio"]

# Graficar la vacunación proyectada como una línea con marcadores
plt.plot(meses, vacunacion_proyectada, marker='d', linestyle='--', color='red', label='Vacunación Proyectada')

# Graficar la vacunación real como barras
plt.bar(meses, vacunacion_real, color='skyblue', edgecolor='black', alpha=0.7, label='Vacunación Real')

# Etiquetas de los ejes y título con formato adecuado
plt.xlabel('Meses')
plt.ylabel('Número de Pacientes Vacunados')
plt.title('Vacunación Real vs. Proyectada (Enero - Julio)')

# Añadir una leyenda
plt.legend()

# Añadir una cuadrícula en el eje y para facilitar la lectura
plt.grid(True, axis='y', linestyle='--', alpha=0.7)

# Ajustar el diseño para evitar recortes
plt.tight_layout()

# Guardar la figura en un archivo (opcional, descomentar para usar)
# plt.savefig('vacunacion_real_vs_proyectada.png')

# Mostrar el gráfico
plt.show()

Reutilización

Cómo citar

Por favor, cita este trabajo como:
Achalma, Elmer. 2025. “Visualización de datos con Python,” May. https://numerus-scriptum.netlify.app/python/2025-05-10-visualizacion-de-datos-con-python/.