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
Mostrar el código
import numpy as npimport 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 discontinuaplt.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 discontinuaplt.plot(anios_porcino, consumo_porcino, marker='d', linestyle='--', color='blue', label='Carne Porcina')# Etiquetas de los ejes y título con formato adecuadoplt.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 derechaplt.legend(loc='lower right')# Configurar marcas en el eje x para mostrar cada añoplt.xticks(anios_bovino)# Añadir una cuadrícula para mejorar la legibilidadplt.grid(True, linestyle='--', alpha=0.7)# Ajustar el diseño para evitar recortes de etiquetasplt.tight_layout()# Guardar la figura en un archivo (opcional, se puede descomentar para usar)# plt.savefig('consumo_carne_chile.png')# Mostrar el gráficoplt.show()
Mostrar el código
import matplotlib.pyplot as pltimport numpy as npx = np.linspace(0, 2* np.pi, 200)y = np.sin(x)fig, ax = plt.subplots()ax.plot(x, y)plt.show()
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 2001tipos_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 bordeplt.bar(tipos_legumbres, consumo_legumbres, color='green', edgecolor='black', alpha=0.7)# Etiquetas de los ejes y título con formato adecuadoplt.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 lecturaplt.grid(True, axis='y', linestyle='--', alpha=0.7)# Ajustar el diseño para evitar recortes de etiquetasplt.tight_layout()# Guardar la figura en un archivo (opcional, descomentar para usar)# plt.savefig('consumo_legumbres_2001.png')# Mostrar el gráficoplt.show()
vertical
Mostrar el código
#plt.figure(figsize=[10,8])#Consumo de legumbres en el 2001legumbres=["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
Mostrar el código
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 bordesplt.hist(niveles_glucosa, bins=intervalos, color='skyblue', edgecolor='black', alpha=0.7)# Etiquetas de los ejes y título con formato adecuadoplt.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 lecturaplt.grid(True, axis='y', linestyle='--', alpha=0.7)# Ajustar el diseño para evitar recortes de etiquetasplt.tight_layout()# Guardar la figura en un archivo (opcional, descomentar para usar)# plt.savefig('distribucion_glucosa.png')# Mostrar el gráficoplt.show()
Grafico circular
Mostrar el código
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) ligeramenteresaltar = [0.1, 0, 0, 0, 0]# Aplicar un estilo visual predefinido (ggplot)plt.style.use("ggplot")# Crear el gráfico de pastelplt.pie(x=ventas, explode=resaltar, labels=marcas_autos, autopct="%.2f%%", shadow=True, startangle=20)# Asegurar que el gráfico sea circularplt.axis=("equal")# Añadir un título descriptivoplt.title("Distribución de Ventas de Autos en EE.UU.")# Añadir una leyenda en la esquina superior izquierdaplt.legend(marcas_autos, loc="upper left")# Ajustar el diseño para evitar recortesplt.tight_layout()# Guardar la figura en un archivo (opcional, descomentar para usar)# plt.savefig('ventas_autos_eeuu.png')# Mostrar el gráficoplt.show()
Grafico de Donut
Mostrar el código
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) ligeramenteresaltar = [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 circularplt.axis=("equal")# Añadir un título descriptivoplt.title("Distribución de Ventas de Autos en EE.UU.")# Añadir una leyenda en la esquina superior izquierdaplt.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 recortesplt.tight_layout()# Guardar la figura en un archivo (opcional, descomentar para usar)# plt.savefig('ventas_autos_eeuu_donut.png')# Mostrar el gráficoplt.show()
Grafico de cajas
Mostrar el código
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 alumnosedades_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 personalizadoplt.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 adecuadoplt.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 lecturaplt.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 recortesplt.tight_layout()# Guardar la figura en un archivo (opcional, descomentar para usar)# plt.savefig('edades_alumnos_secundaria.png')# Mostrar el gráficoplt.show()
Grafico de barras combinadas
Mostrar el código
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íasancho_barras =0.5# Grosor de las barras# Crear el gráfico de barras apiladasbarras_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íasplt.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 adecuadoplt.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 claridadplt.yticks([0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50])# Añadir una cuadrícula en el eje y para facilitar la lecturaplt.grid(True, axis='y', linestyle='--', alpha=0.7)# Añadir una leyenda para identificar las marcasplt.legend()# Ajustar el diseño para evitar recortesplt.tight_layout()# Guardar la figura en un archivo (opcional, descomentar para usar)# plt.savefig('ventas_autos_toyota_audi.png')# Mostrar el gráficoplt.show()
Graficos combinados
Mostrar el código
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 marcadoresplt.plot(meses, vacunacion_proyectada, marker='d', linestyle='--', color='red', label='Vacunación Proyectada')# Graficar la vacunación real como barrasplt.bar(meses, vacunacion_real, color='skyblue', edgecolor='black', alpha=0.7, label='Vacunación Real')# Etiquetas de los ejes y título con formato adecuadoplt.xlabel('Meses')plt.ylabel('Número de Pacientes Vacunados')plt.title('Vacunación Real vs. Proyectada (Enero - Julio)')# Añadir una leyendaplt.legend()# Añadir una cuadrícula en el eje y para facilitar la lecturaplt.grid(True, axis='y', linestyle='--', alpha=0.7)# Ajustar el diseño para evitar recortesplt.tight_layout()# Guardar la figura en un archivo (opcional, descomentar para usar)# plt.savefig('vacunacion_real_vs_proyectada.png')# Mostrar el gráficoplt.show()