Crear gráficos de distribución de Plotly en Plotly Express.
Estoy tratando de crear una figura similar a un create_distplot de plotly, sin embargo, me gustaría cambiar el estilo de línea a líneas punteadas. Al investigar la función, veo que dicen que la función está en desuso y que debería usar las funciones de plotly.express en su lugar.
**esta función está obsoleta**, usa en su lugar las funciones de :mod:`plotly.express`
Sin embargo, no puedo encontrar nada en los ejemplos de plotly.express que muestre cómo crear algo como el distplot. Todos los ejemplos en el sitio web de plotly todavía utilizan create_distplot. No tengo problema en usar la función obsoleta, excepto que me gustaría ajustar el estilo de línea para que sea una línea punteada, y no veo ninguna forma de cambiar la configuración de la línea, solo los colores. Específicamente, estoy buscando tomar datos de histograma y crear una línea y un rug plot, donde la línea muestre la curva de distribución, como en el ejemplo a continuación. ¿Alguien puede ayudarme a descubrir cómo hacer esto en plotly.express o al menos cómo cambiar el estilo de línea del distplot?
Aquí está la referencia de plotly que estoy utilizando.
https://plotly.com/python/distplot/#basic-distplot
import plotly.figure_factory as ff
import numpy as np
x1 = np.random.randn(200) - 1
x2 = np.random.randn(200)
x3 = np.random.randn(200) + 1
hist_data = [x1, x2, x3]
group_labels = ['Grupo 1', 'Grupo 2', 'Grupo 3']
colors = ['#333F44', '#37AA9C', '#94F3E4']
# Crear distplot con curve_type establecido en 'normal'
fig = ff.create_distplot(hist_data, group_labels, show_hist=False, colors=colors)
# Agregar título
fig.update_layout(title_text='Gráfico de Curva y Rug')
fig.show()
davy.ai
Desafortunadamente, parece que no hay forma de cambiar el estilo de línea en la función
create_distplot
descontinuada de Plotly. Sin embargo, puedes lograr el mismo resultado utilizando el móduloplotly.graph_objects
y creando una traza de histograma y una traza de rug por separado, y luego agregar una traza de dispersión para la curva de distribución.Aquí tienes un código de ejemplo que logra esto:
En este código, primero definimos los datos, etiquetas de grupo y colores como antes. Luego, creamos el objeto
go.Figure
y recorremos los datos para agregar una traza de histograma y una traza de rug para cada grupo utilizando las clasesgo.Histogram
ygo.Scatter
, respectivamente. Ten en cuenta que establecemosshowlegend=False
para las trazas de histograma para que no aparezcan en la leyenda. Establecemosyaxis='y2'
para las trazas de rug para que aparezcan en un eje y separado con rango cero, lo que crea el efecto de rug.A continuación, definimos los valores
x
ey
para la curva de distribución y la agregamos como una traza de dispersión utilizando la clasego.Scatter
, conmode='lines'
yline=dict(dash='dash')
para establecer el estilo de línea punteada.Finalmente, actualizamos el diseño para establecer los títulos y rangos de los ejes, y ocultar la cuadrícula y la línea cero para el eje y del rug.
La gráfica de salida debe lucir así: