【问题标题】:Add custom markers to Gantt Chart in Plotly在 Plotly 中向甘特图添加自定义标记
【发布时间】:2021-06-14 03:41:16
【问题描述】:

我是 plotly 新手,我正在使用 px.timeline 创建甘特图。我的数据集中有 3 类数据,一个有开始和结束时间的普通任务,还有两种开始和结束时间相同的任务。我希望正常任务是一个矩形(这就是它的绘制方式),而其他两个任务有一个沙漏标记和一个三角形标记,而不是一条非常细的线?

这就是我的数据的样子:

data = [dict(Task=’’, start=’’, end=’’, shape=’<rect, hour, tri>’)]

样本数据:

df = [dict(Task="Job A", Start='2009-01-01', Finish='2009-01-01', shape='hourglass'),
      dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15', shape='rectangle'),
      dict(Task="Job C", Start='2009-05-30', Finish='2009-05-30', shape='triangle')]

代码:

fig = px.timeline(data, x_start="Start", x_end="Finish", y="Task")
fig.update_yaxes(autorange="reversed", ticklabelposition="outside left")
fig.update_layout(showlegend=False, height=2000, width=1255, margin_pad=10)
fig.show()

例子:

Sample Plot in Excel

有什么方法可以实现吗?

谢谢!

【问题讨论】:

    标签: python-3.x plot plotly plotly-python gantt-chart


    【解决方案1】:

    经过几个小时的搜索,我解决了这个问题。

    将数据分成三份,每份对应3种不同的形状,然后绘制并合并。

    创建 3 个单独的图:

    rect = px.timeline(rect, x_start="Start", x_end="Finish", y="Task", color="color")
    dia = px.scatter(dia, x="Start", y="Task", color="color", symbol_sequence=['diamond'])
    coll = px.scatter(coll, x="Start", y="Task", color="color", symbol_sequence=['hourglass'])
    

    如果需要,更新单个图的跟踪:

    rect.update_traces(marker=dict(line=dict(width=1, color='black')))
    dia.update_traces(marker=dict(size=12, line=dict(width=2)))
    coll.update_traces(marker=dict(size=12, line=dict(width=2)))
    

    设置时间线图的轴:

    rect.update_xaxes(tickformat="%H:%M:%S.%L", tickmode='linear', dtick='120000')
    rect.update_yaxes(autorange='reversed')
    rect.update_layout(title=title, showlegend=False, height=2800, width=2000)
    

    覆盖所有图:

    new_fig = go.Figure(data=rect.data + dia.data + coll.data, layout=rect.layout)
    new_fig.show()
    

    【讨论】:

      猜你喜欢
      • 2019-09-27
      • 2020-09-13
      • 2019-06-17
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      相关资源
      最近更新 更多