Ir al contenido principal

Cómo crear un histograma con Plotly

Aprende a crear histogramas en Python con la biblioteca de visualización de datos Plotly.
Actualizado 17 sept 2026  · 12 min leer

Explorar con IA

ChatGPTClaudePerplexity

Los histogramas son representaciones gráficas muy usadas que agrupan puntos de datos en rangos definidos. Suele verse en estadística para mostrar cuántas veces aparece un tipo de valor dentro de un rango concreto. Por ejemplo, tu profe de mates quizá usó un histograma para visualizar el número de notas obtenidas por toda tu clase. 

Histograma que muestra la distribución de notas

Figura 1: ejemplo de histograma que muestra la distribución de notas de una clase. 

[Fuente: Example Histogram with Matplotlib] 

Sus barras de distintas alturas recuerdan a los gráficos de barras, pero los histogramas visualizan datos cuantitativos, no categóricos, que es el caso de los gráficos de barras. 

Por lo general, los datos numéricos representados en histogramas son continuos, es decir, pueden tomar infinitos valores. Intentar trazar todos los valores de una variable continua suele ser poco práctico. Los histogramas resuelven este problema agrupando los datos en rangos lógicos (bins) y permitiendo su visualización. 

En este tutorial, veremos cómo crear histogramas en Python con la biblioteca de visualización Plotly. También repasaremos distintas formas de personalizar tu histograma en Plotly y por qué la visualización de datos es tan importante. 

Echa un vistazo a este cuaderno de DataLab para seguir el código del tutorial. 

La importancia de la visualización de datos en el análisis

Ningún negocio puede decir que no se beneficiará de comprender mejor sus datos. El análisis de datos ayuda a optimizar el rendimiento y mejorar los resultados; se aplica a cualquier ámbito donde haya datos, porque convertir datos en conocimiento es una ventaja competitiva.   

Las visualizaciones de datos son representaciones gráficas que los analistas usan para comunicar información y datos. Su objetivo es resumir la información en un formato fácil de entender y destacar los hallazgos clave. 

Dicho de otro modo, las empresas usan visualizaciones para identificar rápidamente tendencias que, sin ayuda visual, costaría mucho detectar. Las representaciones gráficas facilitan comunicar información de forma universal, rápida y efectiva. 

Introducción a Plotly

Plotly es una biblioteca de visualización de datos interactiva y de código abierto para Python y R escrita en JavaScript. En este artículo nos centraremos en Plotly para Python, a veces llamado «plotly.py» para distinguirlo de su versión en JavaScript. 

Consejo: haz los cursos Introduction to data visualization with Plotly in Python o Interactive data visualization with Plotly in R para ponerte al día con Plotly.   

Muchos usuarios de Plotly comentan que al principio les «cautivó» la estética moderna que permite aplicar con facilidad. Plotly para Python te permite crear visualizaciones web atractivas e interactivas que se pueden: 

  • mostrar en cuadernos Jupyter, 
  • guardar como archivos HTML independientes, 
  • servir como parte de aplicaciones web en puro Python usando Dash.

Otro punto fuerte de Plotly es su amplísima variedad de tipos de gráficos. La biblioteca admite más de 40 gráficos distintos para casos de uso que incluyen estadística, finanzas, geografía, ciencia y visualizaciones en 3D. 

Exportar visualizaciones creadas con Plotly es sencillo gracias a su integración con Kaleido, una utilidad de exportación de imágenes. También hay soporte para contextos no web, incluidos editores de escritorio (Spyder, PyCharm, etc.) y la publicación de documentos estáticos (por ejemplo, exportar cuadernos de Jupyter a PDF). 

Instalar plotly.py es bastante directo; puedes hacerlo con pip: 

pip install plotly>=5.11.0, <5.12.0

O con Conda: 

conda install -c plotly plotly>=5.11.0, <5.12.0

Nota: Se recomienda instalar las bibliotecas en un entorno virtual para mantener separadas las dependencias de cada proyecto. También puedes empezar con un cuaderno de DataLab, un IDE de ciencia de datos para Python y R en la nube. 

Usar DataLab

DataLab es un entorno de desarrollo integrado (IDE) online que te permite escribir código, analizar datos en solitario o en equipo y compartir insights. Es como un Google Docs pensado para ciencia de datos; descubre más en nuestro artículo sobre Using DataLab in the Classroom.

Para esta tarea, crearemos un cuaderno a partir de un conjunto de datos. DataCamp ofrece un catálogo amplio y en crecimiento de datasets interesantes. Al crear un cuaderno desde un dataset, el entorno incluye los datos preconfigurados y una breve descripción para que puedas ponerte manos a la obra desde el primer minuto.   

Los pasos para crear un cuaderno con un dataset de DataCamp son: 

  • Desde la app de DataLab, selecciona "Datasets" en la barra lateral.
  • Elige un dataset que te interese. Se abrirá un cuadro de diálogo con una vista previa del dataset seleccionado, su diccionario de datos y un enlace a la fuente, la opción de lenguaje (Python o R) y un resumen de publicaciones que otras personas han creado con ese dataset.
  • Selecciona Create workbook.

crear un DataCamp Workspace

Figura 2: GIF con los pasos para crear un cuaderno a partir de un dataset.

Nota: Consulta Creating a Plotly Histogram with Olympics Data para seguir el código.

Usaremos el dataset Olympics Data de la colección interna de DataCamp. Según la descripción, es un histórico de los Juegos Olímpicos modernos, de Atenas 1896 a Río 2016. Cada fila corresponde a una persona (271116 instancias) que compitió en un evento olímpico y la medalla obtenida (si la hubo).

Las columnas son: 

Columna

Descripción

id

Identificador único por atleta

name

Nombre del atleta

sex

M o F

age

Edad del atleta

height

En centímetros

weight

En kilogramos

team

Nombre del equipo

noc

Comité Olímpico Nacional (código de 3 letras)

games

Año y temporada

year

Entero

season

Summer o Winter

city

Ciudad anfitriona

sport

Deporte

event

Prueba

medal

Gold, Silver, Bronze o NA

Con esto en mente, las columnas adecuadas para construir un histograma son: age, height, weight y year. Los histogramas se construyen con valores numéricos continuos: representan la distribución de datos numéricos, donde se agrupan en bins y se muestra el recuento por bin. 

Usaremos la columna age para crear nuestro histograma. 

Crear un histograma con Plotly

Crear un histograma en Python con Plotly es bastante sencillo. Podemos usar Plotly Express, una interfaz de alto nivel muy fácil de usar…

import plotly.express as px

# Create a histogram
fig = px.histogram(olympic_data.age, x="age",
                  title="Distribution of Athletes age")
fig.show()

Histograma creado con Plotly ExpressFigura 3: histograma creado con Plotly Express

También podemos usar Graph Objects.

import plotly.graph_objects as go

fig = go.Figure(data=[go.Histogram(x=olympic_data.age)])

# add the title
fig.update_layout(title=dict(text="Distribution of Athletes age"))
fig.show()

histograma creado con Plotly Graph ObjectsFigura 4: histograma creado con Plotly Graph Objects. 

Las funciones de Plotly express llaman internamente a graph_objects y devuelven una figura. Por eso son tan útiles: permiten crear visualizaciones que, con graph_objects a bajo nivel, requerirían más líneas de código. 

«El módulo plotly.express (normalmente importado como px) contiene funciones que pueden crear figuras completas de una vez y se conoce como Plotly Express o PX. Plotly Express forma parte de la biblioteca Plotly y es el punto de partida recomendado para crear la mayoría de figuras comunes. Cada función de Plotly Express usa graph objects internamente y devuelve una instancia de plotly.graph_objects.Figure

Fuente: Plotly Express in Python

Aunque express sea la puerta de entrada recomendada, usaremos graph_objects para personalizar la apariencia del histograma, ya que ofrece más flexibilidad.  

Personalizar la apariencia del histograma en Plotly

Ahora mismo el histograma es bastante básico. Vamos a mejorarlo cambiando la tipografía del título y añadiendo etiquetas a los ejes. 

# Create histogram
fig = go.Figure(data=[go.Histogram(x=olympic_data.age)])

fig.update_layout(
    # Set the global font
    font = {
        "family":"Times new Roman",
        "size":16
    },
    # Update title font
    title = {
        "text": "Distribution of Athletes age",
        "y": 0.9, # Sets the y position with respect to `yref`
        "x": 0.5, # Sets the x position of title with respect to `xref`
        "xanchor":"center", # Sets the title's horizontal alignment with respect to its x position
        "yanchor": "top", # Sets the title's vertical alignment with respect to its y position. "      
        "font": { # Only configures font for title
            "family":"Arial",
            "size":20,
            "color": "red"
        }
    }
)

# Add X and Y labels
fig.update_xaxes(title_text="Age")
fig.update_yaxes(title_text="Number of Athletes")

# Display plot
fig.show()

Histograma de Plotly con título actualizadoFigura 5: histograma de Plotly con título actualizado y etiquetas de ejes. 

Con estos cambios, el histograma es más informativo. 

Ahora, cambiemos el tamaño de cada bin. 

# Create histogram
fig = go.Figure(data = [
    go.Histogram(
        x = olympic_data.age,
        xbins=go.histogram.XBins(size=5) # Change the bin size to 5
    )
  ]
)

Histograma de Plotly con tamaño de bin igual a 5Figura 6: histograma de Plotly con tamaño de bin igual a 5. 

En el código anterior, establecemos el parámetro xbins en la instancia de go.Histogram a una instancia de go.histogram.XBins y definimos el tamaño de bin deseado como parámetro. Ten en cuenta que también podríamos haber hecho esto con un dict con propiedades compatibles. 

Por último, cambiemos el color de los bins a naranja para que la visualización destaque un poco. 

# Create histogram
fig = go.Figure(data = [
    go.Histogram(
        x = olympic_data.age,
        xbins=go.histogram.XBins(size=5), # Change the bin size
        marker=go.histogram.Marker(color="orange") # Change the color
    )
  ]
)

Histograma de Plotly con bins naranjasFigura 7: histograma de Plotly con bins naranjas.

Mucho mejor. 

En el código anterior, establecemos el parámetro marker en la instancia de go.Histogram a una instancia de go.histogram.Marker y definimos el color deseado como parámetro. 

Además, hay muchas otras personalizaciones posibles, como añadir texto al pasar el cursor. 

Activar el texto al pasar el cursor

Ahora mismo, cuando pasas el cursor por encima de una barra aparece un texto que detalla qué representa, como ves en la Figura 8. 

texto actual al pasar el cursor

Figura 8: texto actual que se muestra al pasar el cursor sobre el histograma. 

No es muy intuitivo. Buscamos que los gráficos se expliquen solos, incluso el texto emergente. Así que vamos a actualizar la información que se muestra al pasar el cursor por un bin. 

# Create histogram
fig = go.Figure(data = [
    go.Histogram(
        x = olympic_data.age,
        xbins=go.histogram.XBins(size=5), # Change the bin size
        marker=go.histogram.Marker(color="orange"), # Change the color
        hovertemplate="<br>".join([
            "Age Range: %{x}",
            "Number of Athletes: %{y}"]) # Make hover text more informative
    )
  ]
)

texto actualizado al pasar el cursorFigura 9: información actualizada al pasar el cursor. 

El texto ahora es mucho más informativo, lo que facilita la interpretación de la visualización. Lo conseguimos actualizando el parámetro hovertemplate en nuestra instancia de go.Histogram

Añadir opciones de filtrado

Antes comentamos que podíamos construir histogramas con age, height, weight y year. No hace falta crear uno para cada variable. 

Podemos crear un único histograma y añadir botones de filtro para alternar qué variable se muestra en la visualización. 

Así queda en código.

"""
Starter code provided by vestland on StackOverflow
Link: https://bit.ly/3ipqOMo
"""
# continuous features
continuous_vars = ["age", "height", "weight", "year"]

# plotly
fig = go.Figure()

# set up ONE trace
fig.add_trace(
    go.Histogram(x = olympic_data.age,
                xbins=go.histogram.XBins(size=5), # Change the bin size
                marker=go.histogram.Marker(color="orange"), # Change the color
            )
)

buttons = []

# button with one option for each dataframe
for col in continuous_vars:
    buttons.append(dict(method='restyle',
                        label=col,
                        visible=True,
                        args=[{"x":[olympic_data[col]],
                              "type":'histogram', [0]],
                        )
                  )

# some adjustments to the updatemenus
updatemenu = []
your_menu = dict()
updatemenu.append(your_menu)

updatemenu[0]['buttons'] = buttons
updatemenu[0]['direction'] = 'down'
updatemenu[0]['showactive'] = True

# add dropdown menus to the figure
fig.update_layout(showlegend=False, updatemenus=updatemenu)
fig.show()

histograma con filtros aplicadosFigura 10: histograma con filtros para alternar varias variables en una sola visualización.

Y listo. No olvides abrir el cuaderno Creating a Plotly Histogram with Olympics Data y trastear con lo que hemos construido en este tutorial. 

Para terminar 

Ya sabes cómo crear un histograma en Plotly para Python. En este tutorial hemos visto:

  • Qué es un histograma y cómo funciona
  • La importancia de la visualización de datos en el análisis
  • Cómo empezar con DataLab
  • Cómo crear un histograma en Plotly 
  • Distintas formas de personalizar tu histograma
  • Cómo aplicar filtros 

Si buscas más recursos sobre histogramas o sobre Plotly, echa un vistazo a estos enlaces:

Temas
Python
Visualización de datos

Cursos de Plotly

Curso

Introducción a la visualización de datos con Plotly en Python

4 h
21.8K
Crea gráficos interactivos de datos en Python con Plotly.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado

Tutorial

Histogramas en Matplotlib

Aprende sobre histogramas y cómo puedes utilizarlos para obtener información de los datos con la ayuda de matplotlib.
Aditya Sharma's photo

Aditya Sharma

8 min

Tutorial

Introducción al trazado con Matplotlib en Python

Este tutorial muestra cómo utilizar Matplotlib, una potente biblioteca de visualización de datos en Python, para crear gráficos de líneas, barras y dispersión con datos bursátiles.

Kevin Babitz

25 min

Tutorial

Tutorial de Python Seaborn Line Plot: Crear visualizaciones de datos

Descubra cómo utilizar Seaborn, una popular biblioteca de visualización de datos de Python, para crear y personalizar gráficos de líneas en Python.
Elena Kosourova's photo

Elena Kosourova

12 min

Tutorial

Gráfico lineal de series temporales Matplotlib

Este tutorial explora cómo crear y personalizar gráficos de líneas de series temporales en matplotlib.
Elena Kosourova's photo

Elena Kosourova

8 min

line plot python

Tutorial

Gráficos lineales en MatplotLib con Python

Este tutorial práctico profundiza en la creación y personalización de gráficos lineales con Matplotlib, una potente biblioteca de visualización de datos en Python.
Arunn Thevapalan's photo

Arunn Thevapalan

11 min

Tutorial

Guía paso a paso para hacer mapas en Python usando la librería Plotly

Haz que tus datos destaquen con impresionantes mapas creados con Plotly en Python
Moez Ali's photo

Moez Ali

7 min

Ver MásVer Más