簡體   English   中英

在 plotly 中添加多行到 strip plot

[英]Adding multiple lines to a strip plot in plotly

我想將多條短線添加到 plotly 中的條帶 plot,最好以添加更多列/類別的方式進行擴展。 在我的實際問題中,我還有很多專欄。 如果這些線路可以有自己的 hover label 那就太棒了。

我手動得到了第一個,但是對於 rest 很難手動設置每一行,尤其是當有 10 個類別時。

import plotly.express as px

df = px.data.tips()
fig = px.strip(df, y="total_bill", x="day")

fig.update_layout(shapes=[dict(type='line', x0=.1, y0=30, x1=.15, y1=30,
                               xref='paper', yref='y',
                               line_width=3, line_color='red'),
                          dict(type='line', x0=.4, y0=30, x1=.45, y1=30,
                               xref='paper', yref='y',
                               line_width=3, line_color='red')
                         ])

fig.show()

[帶狀圖](https://i.stack.imgur.com/3heAn.png)

由於內容是箱線圖,因此我將其重復用於圖 object 的圖表。需要做一些工作的是箱線圖是分類變量的 x 軸。 以編程方式創建線段的最佳方法是在散點圖 plot 的線模式下; 為了使 x 軸坐標數值化,我為分類變量添加了一個新的代碼列。 以數字方式繪制 x 軸后,要添加的線段應位於該 x 軸的索引之前或之后。 您可以確定所需的寬度。 最后,用 x 軸的索引和比例字符串更新 x 軸。

import plotly.express as px
import plotly.graph_objects as go

df = px.data.tips()
df['day_code'] = df['day'].astype('category').cat.codes
fig1 = px.strip(df, x='day_code', y="total_bill")

fig = go.Figure()
fig.add_trace(fig1.data[0])

for i in [0,1,2,3]:
    fig.add_trace(go.Scatter(
        mode='lines',
        x=[i-0.1, i+0.1],
        y=[30,30],
        hovertemplate='%{y}<extra></extra>',
        line_color='red',
        line_width=2,
        showlegend=False)
                 )

fig.update_xaxes(tickvals=[0,1,2,3], ticktext=df['day'].unique().tolist())
fig.show()

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM