如何使用Plotly绘制单条无堆叠的时间线甘特图
要实现所有任务在同一横向条展示,只需在pex.timeline调用时增加固定的y参数,让所有任务绑定到同一个y轴刻度即可,修改后代码如下:
import pandas as pd import plotly.express as pex d1 = dict(Start= '2021-10-10 02:00:00', Finish = '2021-10-10 09:00:00', Task = 'Sleep') d2 = dict(Start= '2021-10-10 09:00:00', Finish = '2021-10-10 09:30:00', Task = 'EAT') d3 = dict(Start= '2021-10-10 09:30:00', Finish = '2021-10-10 12:00:00', Task = 'Study') d4 = dict(Start= '2021-10-10 12:00:00', Finish = '2021-10-10 16:00:00', Task = 'Work') d5 = dict(Start= '2021-10-10 16:00:00', Finish = '2021-10-10 16:50:00', Task = 'EAT') d6 = dict(Start= '2021-10-10 17:00:00', Finish = '2021-10-10 20:00:00', Task = 'Study') d8 = dict(Start= '2021-10-10 20:00:00', Finish = '2021-10-10 20:40:00', Task = 'EAT') d7 = dict(Start= '2021-10-10 21:00:00', Finish = '2021-10-11 05:00:00', Task = 'Sleep') df = pd.DataFrame([d1,d2,d3,d4,d5,d6,d7,d8]) gantt = pex.timeline(df, x_start='Start', x_end = 'Finish', color = 'Task', y = '日程', # 固定y值,所有任务将展示在同一行 height=300) # 可选配置:隐藏y轴标题,优化显示效果 gantt.update_layout(yaxis_title=None) gantt.show()
原理解释:plotly express的timeline默认会将y参数的不同取值拆分到不同的横向行展示,当所有任务绑定同一个y值时,就会自动排列在同一行中。你可以根据需要调整y的取值文字,也可以通过update_layout隐藏y轴的显示元素让图表更简洁。
内容的提问来源于stack exchange,提问作者Gaurav
相关产品推荐
相关产品推荐

