【问题标题】:Plotly: How to label bars on a gantt chart?Plotly:如何在甘特图上标记条形?
【发布时间】:2019-09-27 16:21:13
【问题描述】:

有什么方法可以在 Plotly Gantt 图中创建条形图上的任务标签和 y 轴上的资源标签?

plotly.figure_factory.create_ganttdocumentation 中没有这样的例子。理想图表的抽象示例如下所示:

【问题讨论】:

    标签: python plotly visualization gantt-chart


    【解决方案1】:

    您可以根据your link 中的第一个示例的设置,在fig['layout']['annotations'] 中添加结构为字典列表的注释。

    剧情:

    代码:

    情节的结构与上面的源代码相似,但我已将其设置为在离线 Jupyter Notebook 中与 iplot() 一起使用。

    # imports
    from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
    from IPython.core.display import display, HTML
    import plotly.figure_factory as ff
    import plotly.graph_objs as go
    
    # setup
    display(HTML("<style>.container { width:50% !important; } .widget-select > select {background-color: gainsboro;}</style>"))
    init_notebook_mode(connected=True)
    
    #%qtconsole --style vim
    
    # dates
    StartA = '2009-01-01'
    StartB = '2009-03-05'
    StartC = '2009-02-20'
    
    FinishA='2009-02-28'
    FinishB='2009-04-15'
    FinishC='2009-05-30'
    
    LabelDateA='2009-01-25'
    LabelDateB='2009-03-20'
    LabelDateC='2009-04-01'
    
    # sample data
    df = [dict(Task="Task A", Start=StartA, Finish=FinishA),
          dict(Task="Task B", Start=StartB, Finish=FinishB),
          dict(Task="Task C", Start=StartC, Finish=FinishC)]
    
    # figure
    fig = ff.create_gantt(df)
    
    # add annotations
    annots =  [dict(x=LabelDateA,y=0,text="Task label A", showarrow=False, font=dict(color='white')),
               dict(x=LabelDateB,y=1,text="Task label B", showarrow=False, font=dict(color='White')),
               dict(x=LabelDateC,y=2,text="Task label C", showarrow=False, font=dict(color='White'))]
    
    # plot figure
    fig['layout']['annotations'] = annots
    iplot(fig)
    

    可能的改进:

    如您所见,我已经硬编码了标签所在的日期。您可以在开始日期和结束日期之间轻松calculate the middle date。但是为什么不在(x=LabelDateC,y=2,align="center",text="Task label C", showarrow=False, font=dict(color='White')) 中使用align=center 简单地调整标签呢?这不起作用,因为标签似乎附加到日期本身,而不是条的结构或大小。

    【讨论】:

    • 感谢您的回答。它有很大帮助。现在唯一的小问题是我想将这些注释与group_tasks = True 选项结合起来,这会反转“任务”类别沿 y 轴的顺序:例如,当group_Tasks = False 类别“Job-1”位于底部时和“Job-4” - 在顶部。与group_Tasks = True 情况相反:顶部有一个“加入”“Job-1”。不知道有什么办法可以解决?
    猜你喜欢
    • 1970-01-01
    • 2016-02-25
    • 2017-08-11
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多