【发布时间】:2021-05-28 13:56:13
【问题描述】:
我打算使用 python 库“Plotly”来构建甘特图。具体来说:https://plotly.com/python/gantt/#group-tasks-together。
但是,每个“作业”可以有多个任务,并且这些任务可以并行运行。根据我的观察,Plotly 不会将并行运行的任务堆叠在一起,这使得阅读图表变得非常困难。这是一个示例,其中“作业 A”有两个并行运行的任务,但只有一个可见:
data = [dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28'),
dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28'),
dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15'),
dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30')]
# Without group_tasks=True, There would be two separate "Job A" labels
fig = ff.create_gantt(data, group_tasks=True)
fig.show()
我想要的是两个“作业 A”任务都可见,但垂直堆叠,“作业 A”位于其任务占用的垂直空间的中心。像这样,但没有两个“工作 A”标签:
如果有人对我的甘特图项目有任何图书馆建议,请随时分享!谢谢!
【问题讨论】:
-
我在Altair's 库中尝试了您的数据,但作业 A 没有聚合成两个任务。这取决于您对任务的看法,但是如果在相同的时间内有相同的任务,那么工作名称不会是 Job A-1 和 Job A-2 吗?
-
感谢您花时间研究这些数据!让我把数据放到一个有意义的角度。想象一下,每个“工作”都是一家餐厅,每个任务(酒吧)都是一个订单,其中包含烹饪和上菜所需的时间。餐厅以异步方式移动,因此它们有多个并行运行的任务,并且经常相互重叠。这些任务总是独一无二的,永远不应该被隐藏。这有帮助吗?
-
除了垂直堆叠之外,您还可以用另一种方法来完成这项工作吗?这个问题的解决方案:stackoverflow.com/questions/67129085/… 使用时间线(我认为可以在您的情况下使用),甚至应该使用甘特图。
-
我找到了这个例子:community.plotly.com/t/group-by-color-in-px-timeline/51049 这正是我想要的。我怎样才能做到这一点,因为它必须可以使用 Plotly?
-
我的猜测是您将需要一些解决方法,例如使用注释或形状手动将
Job A的条形放置在图中其余部分的正确配置中。如果没有人回答,我稍后会回过头来!
标签: python plotly gantt-chart