• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Calculadora XIRR con Flujos Irregulares
      • Simulador FIRE (Financial Independence, Retire Early)
    • Negocios
      • CLV
      • Scoring
    • Herramientas
      • Formateador / Minificador de JSON
      • Conversor CSV ↔ JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Combinar histogramas en Matplotlib

agosto 2, 2022 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 4 minutos

Una de las grandes ventajas de trabajar con Matplotlib es la facilidad con la que se pueden combinar múltiples gráficas en una única figura. Permitiendo simplificar las tareas de comparación de datos. Algo que no es una excepción en el caso de los histogramas, en una figura se puede mostrar varios, credos a partir de diferentes conjuntos de datos, y analizar de una forma fácil lo diferentes o similares que son estos. Veamos algunas de las opciones que existen para combinar histogramas en Matplotlib.

Incluir dos histogramas en una figura de Matplotlib

Para dibujar dos histogramas en una figura de Matplotlib solamente hay que crear uno y luego otro mediante en la misma figura con el método hist(). El resultado es una única figura con ambos histogramas, superpuesto el segundo sobre el primero. Por ejemplo, en el siguiente código se generan aleatoriamente los valores de dos distribuciones normales con diferente media y se muestran ambos histogramas en una figura.

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)

sim_1 = np.random.normal(0, 4, 10000)
sim_2 = np.random.normal(7, 4, 1000)

plt.hist(sim_1, label='Simulación 1')
plt.hist(sim_2, label='Simulación 2')
plt.legend(loc='upper right')
plt.show()

Al ejecutar este código se obtiene la siguiente figura.

Combinación de dos histogramas creada con Matplotlib
Combinación de dos histogramas creada con Matplotlib

Nótese que la segunda simulación contiene diez veces menos registros que la primera, uno mil en el segundo caso frente a los diez mil del primero, por lo que en la figura casi no se puede ver el segundo histograma. Si lo que se desea comprar es la densidad de datos, es necesario indicarlo a la función hist(). Mediante el parámetro density de la función hist() se puede cambiar el comportamiento de esta para que use en el eje de ordenados se incluya la densidad en lugar de la frecuencia. Así, aunque el número de muestras sea diferente, se puede comparar las densidades de ambas distribuciones. Lo que se muestra en el siguiente código.

1200 publicaciones en Analytics Lane
En Analytics Lane
1200 publicaciones en Analytics Lane

plt.hist(sim_1, density=True, label='Simulación 1')
plt.hist(sim_2, density=True, label='Simulación 2')
plt.legend(loc='upper right')
plt.show()

El cual produce la siguiente figura.

Unión de dos histogramas en los que se muestra la densidad de los datos creada con Matplotlib
Unión de dos histogramas en los que se muestra la densidad de los datos creada con Matplotlib

Visualizar los valores superpuestos al combinar histogramas en Matplotlib

En el último ejemplo el histograma del segundo conjunto de datos oculta parte del primero, dificultando el análisis de la información. Siendo este un problema para el que existen varias soluciones. Una de las opciones más sencillas es incluir un valor de alpha distinto al de la unidad, por lo que los histogramas serán parcialmente transparentes. Así, aunque se superpongan parcialmente los datos, se podrán seguir viendo la forma de todos. Lo que se consigue asignando al parámetro alpha de la función hist() un valor inferior a la unidad, como se muestra en el siguiente ejemplo.

plt.hist(sim_1, alpha=0.5, density=True, label='Simulación 1')
plt.hist(sim_2, alpha=0.5, density=True, label='Simulación 2')
plt.legend(loc='upper right')
plt.show()

Obteniendo la siguiente figura.

Combinación de dos histogramas en Matplotlib con canal Alpha igual a 0,5
Combinación de dos histogramas en Matplotlib con canal Alpha igual a 0,5

Otra opción para comprar histogramas es dibujarlos con un desplazamiento, aunque es algo más complicado. En primer lugar, es necesario definir las posiciones de x en los que se dibujan las barras del histogramas y emplear este vector como entrada de la función hist(). Las posiciones son fáciles de calcular, con np.linspace() se puede indicar el valor mínimo, el máximo y el número de bins. Valores que se pueden obtener de las anteriores figuras. Ahora, solamente se tiene que llamar una vez a la función hist() pasándole como primer parámetro una lista con los distintos conjuntos de datos, la posición de los bins y las opciones que deseemos agregar. Es importante notar que los nombres de las series se han de indicar también en una lista. Por ejemplo, usando el siguiente código.

bins = np.linspace(-15, 20, 15)

plt.hist([sim_1, sim_2], bins, density=True, label=['Simulación 1', 'Simulación 1'])
plt.legend(loc='upper right')
plt.show()

Lo que da como resultado el siguiente histograma.

Dos histogramas desplazados en una figura de Matplotlib
Dos histogramas desplazados en una figura de Matplotlib

Una figura que es diferente a las anteriores, ahora las barras de cada serie no ocupan todo el espacio, sino que se combinan las de las dos.

Publicidad


Conclusiones

En esta ocasión se ha visto algunas de las opciones existen para combinar histogramas en Matplotlib. Unas opciones que son útiles para comparar de una forma sencilla los valores en diferentes conjuntos de datos. Lo bueno de estos métodos es que se pueden extender a otros tipos de figuras, ya que no es una propiedad exclusiva de los histogramas.

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • 1200 publicaciones en Analytics Lane
  • Analytics Lane lanza su Conversor TIN ↔ TAE: la herramienta definitiva para entender el coste real de depósitos, préstamos e hipotecas
  • Analytics Lane lanza su Conversor de Bases Numéricas: entiende cómo trabajan los ordenadores a nivel de bits
  • Analytics Lane lanza su Visualizador de Series Temporales: entiende tendencia, estacionalidad y ruido de forma visual e interactiva
  • Analytics Lane lanza un nuevo Formateador y Tester de Expresiones Regulares para desarrolladores
  • Analytics Lane lanza un Conversor CSV ↔ JSON para transformar datos en tiempo real
  • Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring
  • Analytics Lane lanza una Calculadora de Rentabilidad con Flujos Irregulares basada en TIR (XIRR)
  • ¡Analytics Lane cumple ocho años!

Publicado en: Python Etiquetado como: Matplotlib

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Ley de Benford: cómo detectar datos manipulados con ejemplos reales

mayo 28, 2026 Por Daniel Rodríguez

Subplots en Matplotlib: cómo organizar múltiples gráficos en una sola figura

mayo 26, 2026 Por Daniel Rodríguez

Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos

mayo 21, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Buscar en Excel con dos o más criterios publicado el septiembre 7, 2022 | en Herramientas
  • Cómo desinstalar Oracle Database 19c en Windows publicado el noviembre 25, 2022 | en Herramientas
  • Ratios para evaluar fondos de inversión y ETFs: Sharpe, Sortino, Treynor y Alpha de Jensen publicado el marzo 7, 2025 | en Ciencia de datos
  • Copiar y pegar Activar copiar y pegar en VirtualBox publicado el mayo 1, 2019 | en Herramientas
  • JSON en bases de datos: cuándo es buena idea y cuándo no publicado el febrero 24, 2026 | en Ciencia de datos

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.1 (11)

Aplicar el método D’Hondt en Excel

Comentarios recientes

  • bif en JSON en bases de datos: cuándo es buena idea y cuándo no
  • bif en Cómo desinstalar Oracle Database 19c en Windows
  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto