使用facet_row时,Plotly px.Timeline y 标记不会调整

问题描述 投票:0回答:1

使用一个看起来像这样的简单数据框

df

以下代码

fig = px.timeline(df, 
              x_start="Target Date Start", 
              x_end="Target Date End", 
              y="Initiative", 
              color="Status Bin", 
              facet_row="Project Key",
              template="plotly_white") 

生成不根据facet行进行调整的图表。我希望只有与给定项目键相关的举措才会显示在 y 标记中,但会显示所有举措: enter image description here

请注意,它仅显示相关条形,但它显示所有 y 标记,而不是过滤相关举措,并且它在 facet_rows 之间保持相同的大小,而我希望它们的大小与各自的举措数量成正比。组

python plotly timeline gantt-chart plotly-express
1个回答
0
投票

如果您的目标是优化每个子图的 y 轴,而不是使 y 轴值对所有子图通用,那么图形对象可以处理此问题,但它会破坏组织良好的可视化图形x 和 y 轴。

import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots

row_cnt = len(df['Project Key'].unique())
fig = make_subplots(rows=row_cnt, cols=1)

for idx,k in enumerate(df['Project Key'].unique()):
    dff = df[df['Project Key'] == k]
    print(dff)
    tl = px.timeline(dff,
                      x_start="Target Date Start",
                      x_end="Target Date End",
                      y="Initiative",
                      color="Status Bin")
    for t in range(len(tl.data)):
        fig.add_trace(tl.data[t], row=idx+1, col=1)
        fig.update_xaxes(type='date')
    
fig.update_layout(height=1200, width=1000, template="plotly_white")

fig.show()
© www.soinside.com 2019 - 2024. All rights reserved.