Tengo 3 listas con algunas cadenas en él:
high = ['string1','string2','string3']
med = ['string4','string5','string6']
low = ['string7','string8','string9']
Quiero hacer un gráfico como el siguiente:
Puede ser cualquier forma geométrica pero quiero poner dentro de ellas la cadena de las 3 listas:
red form gets high list's strings
yellow form gets med list's strings
green form gets low list's string
no se por donde empezar si alguien me puede ayudar con esto se lo agradezco
Solución del problema
Así es como lo abordé:
He usado las formas de la Biblioteca Plotly para crear rectángulos y texto como puntos en el eje, puede usar el mismo enfoque en Seaborn y Matplotlib.
Puede crear las etiquetas de texto en el gráfico de la siguiente manera:
fig.add_trace(go.Scatter( x=[0, 0, 0],
y=[3, 0, -3],
text=["red form gets high list's strings",
"yellow form gets med list's strings",
"green form gets low list's string"],
mode="text",
textfont=dict(color="black", size=18,family="Arail",)))
Las formas de recatángulo para las coordenadas de texto correspondientes se pueden crear de la siguiente manera:
fig.add_shape(type="rect",
line_color="gray", fillcolor="red",
x0= <Fixed x0 coordinate point>,
y0= <desired y0 coordinate point>, x1= <Fixed x2 coordinate point>, y1=<Desired y1 coordinate point>)
Además, actualicé la figura para ocultar el eje y las marcas.
Código completo a continuación:
import plotly.graph_objects as go
fig = go.Figure()
# Creating scatter trace of text labels
fig.add_trace(go.Scatter( x=[0, 0, 0],
y=[3, 0, -3],
text=["red form gets high list's strings",
"yellow form gets med list's strings",
"green form gets low list's string"],
mode="text",
textfont=dict(color="black", size=18,family="Arail",)))
# Update axes properties
fig.update_xaxes(showticklabels=False,
showgrid=False, zeroline=False,)
fig.update_yaxes(showticklabels=False,
showgrid=False, zeroline=False,)
#x co-ordinate points
rect_x0, rect_x1 = -2, 2
# Add rectangles
fig.add_shape(type="rect",
line_color="gray", fillcolor="red",
x0= rect_x0, y0=2, x1= rect_x1, y1=4)
fig.add_shape(type="rect",
line_color="gray", fillcolor="green",
x0= rect_x0, y0=-1, x1= rect_x1, y1=1)
fig.add_shape(type="rect",
line_color="gray", fillcolor="yellow",
x0= rect_x0, y0=-4, x1= rect_x1, y1=-2)
fig.update_shapes(opacity=0.3, xref="x", yref="y")
fig.update_layout(margin=dict(l=20, r=20, b=100),
height=600, width=800,
plot_bgcolor="white")
fig.show()
Resultado
No hay comentarios:
Publicar un comentario