Plotly Bar Plot - Tutorial y ejemplos

Plotly es una biblioteca de visualización de datos de Python basada en JavaScript, enfocada en visualizaciones interactivas y basadas en la web. Tiene la sencillez de Seaborn, con un...

Introducción

Plotly es una biblioteca de visualización de datos de Python basada en JavaScript, enfocada en visualizaciones interactivas y basadas en la web. Tiene la sencillez de Seaborn, con una API de alto nivel, pero también la interactividad de Bokeh.

Además de la funcionalidad de la biblioteca principal, el uso del Plotly Express integrado con Dash lo convierte en una excelente opción para aplicaciones basadas en web y tableros interactivos basados ​​en datos, generalmente escritos en Flask.

En esta guía, veremos cómo trazar un gráfico de barras con Plotly.

Los gráficos de barras se usan más comúnmente para visualizar datos categóricos, donde la altura de cada barra representa el número de ocurrencias en esa categoría.

Traza un gráfico de barras con Plotly

Para trazar un gráfico de barras en Plotly, simplemente llame a la función bar() de la instancia de Plotly Express (px), proporcionando los argumentos x e y con datos válidos:

1
2
3
4
5
6
7
import plotly.express as px

x = ['Category 1', 'Category 2', 'Category 3']
y = [5, 3, 6]

fig = px.bar(x, y)
fig.show()

Aquí, tenemos tres categorías, como una lista que hemos proporcionado al argumento x y algunos valores escalares que hemos proporcionado al argumento y. Esto da como resultado un gráfico de barras simple e intuitivo:

Sin embargo, rara vez trabajamos con listas cuando hacemos visualización de datos. Importemos el Conjunto de datos de usuarios de telecomunicaciones y visualicemos las funciones InternetService y tenure a través de un gráfico de barras.

La característica InternetService es una característica categórica que especifica qué tipo de servicio está utilizando el cliente, mientras que permanencia es una característica numérica que representa cuánto tiempo ha estado un cliente con la empresa, en meses:

1
2
3
4
5
import pandas as pd
import plotly.express as px

df = pd.read_csv('telecom_users.csv')
print(df.head())

Esto resulta en:

1
2
3
4
5
6
   gender  SeniorCitizen  tenure InternetService ...
0    Male              0      72              No ...
1  Female              0      44     Fiber optic ...
2  Female              1      38     Fiber optic ...
3    Male              0       4             DSL ...
4    Male              0       2             DSL ...

Ahora, avancemos y representemos estos datos como un gráfico de barras:

1
2
3
4
5
6
7
import pandas as pd
import plotly.express as px

df = pd.read_csv('telecom_users.csv')

fig = px.bar(df, x = 'InternetService', y = 'tenure')
fig.show()

Para trazar datos de un conjunto de datos, proporcionamos la fuente de datos (df) como primer argumento, y los nombres de las columnas que nos gustaría visualizar en los argumentos x e y. Plotly los mapea, obtiene los datos y genera un gráfico:

Ahora, el gráfico generado por Plotly en realidad separa cada instancia en una pequeña barra apilada propia en este gráfico, ya que varias filas comparten el mismo valor x, a diferencia del mapeo simple 1 a 1 como el que teníamos en el primer ejemplo.

Podemos ver el número acumulativo de meses que han servido a sus clientes, en paralelo. Si bien ~90 000 meses puede parecer una cantidad locura de meses (7500 años), la “tenencia” media es de “29” meses:

1
print(df['tenure'].median()) # 29.0

Cambiar los colores de la gráfica de barras con Plotly

Es fácil cambiar los colores de cada una de las instancias antes mencionadas, en función de cualquier otra variable presente en el conjunto de datos. En la mayoría de los casos, se trata de otras características categóricas, como ‘género’ o ‘SeniorCitizen’.

Agrupar instancias por otra característica crea un Gráfico de barras agrupadas, que comúnmente se trazan uno junto al otro. Simplemente coloreando instancias basadas en otra característica, tendremos un Gráfico de barras agrupadas apiladas, ya que tendremos dos o más grupos de instancias uno encima del otro.

Echemos un vistazo a la Gráfica de barras una vez más, una vez que coloreamos cada gráfica dependiendo de la característica de género:

1
2
3
4
5
6
7
import pandas as pd
import plotly.express as px

df = pd.read_csv('telecom_users.csv')

fig = px.bar(df, x = 'InternetService', y = 'tenure', color='gender')
fig.show()

Ahora, se aplicará el esquema de color predeterminado de Plotly, y las instancias se ordenarán por color para que no se mezclen a lo largo de la trama:

Dado que tenemos varias filas que comparten los mismos valores x, estos se trazan, esencialmente, como barras agrupadas apiladas.

Si tuviéramos que trazar una función diferente, que no se apila (no es una opción binaria de otra función), la trama se vería bastante diferente:

1
2
3
4
5
6
7
8
import pandas as pd
import plotly.express as px

df = pd.read_csv('telecom_users.csv')

fig = px.bar(df, x='tenure', y='MonthlyCharges', color='tenure')

fig.show()

Al proporcionar muchos valores de color, como 0..70 a través de la función tenure, verá hermosos gradientes formados en sus gráficos.

Trazar Trazar barras agrupadas con Plotly

A veces, es más fácil diferenciar si trazamos las barras una al lado de la otra, en lugar de apilarlas una encima de la otra. Esto es particularmente útil cuando tenemos características binarias, como SeniorCitizen que solo tiene dos valores. Realmente puede tener valores n en las funciones que agrupa, sin embargo, la mayoría de los grupos realmente no nos benefician mucho si son demasiado grandes.

Para hacer esto, simplemente podemos actualizar el diseño de la ‘Figura’ y establecer el ‘modo de barra’ en ‘grupo’:

1
2
3
4
5
6
7
8
import pandas as pd
import plotly.express as px

df = pd.read_csv('telecom_users.csv')

fig = px.bar(df, x = 'InternetService', y = 'tenure', color='gender')
fig.update_layout(barmode='group')
fig.show()

Ahora, es mucho más fácil comparar el número de instancias:

Trazar un gráfico de barra horizontal con Plotly

Para trazar un gráfico de barras horizontalmente usando Plotly, podemos establecer el argumento de “orientación” en “h” (a diferencia de la “v” predeterminada) mientras trazamos el gráfico de barras:

1
2
3
4
5
6
7
8
import pandas as pd
import plotly.express as px

df = pd.read_csv('telecom_users.csv')

fig = px.bar(df, x='MonthlyCharges', y='tenure', color='tenure', orientation='h')

fig.show()

Tenga en cuenta que si desea mantener la relación X-Y como estaba antes, cambiará los argumentos x e y. Ejecutar este código da como resultado:

Ordenar diagramas de barras en Plotly

Plotly ordena automáticamente las barras. Puede modificar directamente esta configuración actualizando los parámetros de Figura.

Puede optar por pedidos manuales o pedidos automáticos. Para ordenar manualmente, puede pasar un diccionario que contenga los nombres de las características y su orden, lo que resultará en un orden fijo, al argumento category_orders:

1
2
3
4
5
6
7
8
9
import pandas as pd
import plotly.express as px

df = pd.read_csv('telecom_users.csv')

fig = px.bar(df, x='InternetService', y='tenure', color='gender',
             category_orders={"InternetService": ["DSL", "Fiber optic", "No"],
                              "gender": ["Female", "Male"]})
fig.show()

Aquí, ordenamos la función InternetService en un orden específico, que configuramos manualmente, así como la función género.

Trazar el gráfico de barras ahora dará como resultado:

Alternativamente, especialmente si hay una gran cantidad de valores posibles, es posible que deseemos dejar que Plotly clasifique y ordene automáticamente los valores de las características. Podemos ordenarlos categóricamente o numéricamente.

Y ambos se pueden ordenar además en orden ‘ascendente’ o ‘descendente’. Para ordenar numéricamente, invocamos la palabra clave ’total’, mientras que invocamos la palabra clave ‘categoría’ para el ordenamiento categórico.

De forma predeterminada, Plotly ajusta el orden en función de los datos proporcionados; en nuestro caso, lo ordenó como “ascendente total”. Cambiemos eso a descendente total:

1
fig.update_layout(xaxis={'categoryorder':'total descending'})

Esto resulta en:

Al ordenar categóricamente, ordena lexicográficamente:

1
fig.update_layout(xaxis={'categoryorder':'category ascending'})

Esto resulta en:

Conclusión

En este tutorial, echamos un vistazo rápido a cómo trazar y personalizar gráficos de barras con Plotly.

Si está interesado en Visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro paquete de libros en [Visualización de datos en Python](https://gum.co/data-visualization -en-paquete-de-libros-de-python):

Visualización de datos en Python Vuélvase peligroso con la visualización de datos ✅ Garantía de devolución de dinero de 30 días sin preguntas ✅ Principiante a Avanzado ✅ Actualizado periódicamente de forma gratuita (última actualización en abril de 2021) ✅ Actualizado con recursos y guías adicionales

Visualización de datos en Python con Matplotlib y Pandas es un libro diseñado para llevar a los principiantes absolutos a Pandas y Matplotlib, con conocimientos básicos de Python, y permitirles construir una base sólida para el trabajo avanzado con estas bibliotecas, desde gráficos simples. a gráficos 3D animados con botones interactivos.

Sirve como una guía detallada que le enseñará todo lo que necesita saber sobre Pandas y Matplotlib, incluido cómo construir tipos de gráficos que no están integrados en la propia biblioteca.

Visualización de datos en Python, un libro para desarrolladores principiantes e intermedios de Python, lo guía a través de la manipulación de datos simple con Pandas, cubre bibliotecas de trazado centrales como Matplotlib y Seaborn, y le muestra cómo aprovechar las bibliotecas declarativas y experimentales. como Altair. Más específicamente, a lo largo de 11 capítulos, este libro cubre 9 bibliotecas de Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas y VisPy.

Sirve como una guía práctica única para la visualización de datos, en una plétora de herramientas que podría usar en su carrera.