安装plotly_express第三方库
源码:
import plotly_express as px def taetgqntt(): df = [ dict(Task="张三", Start='2021-10-2', Finish='2021-10-8', Resource='中级'), dict(Task="张三", Start='2021-10-1', Finish='2021-10-3', Resource='高级'), dict(Task="张三", Start='2021-10-7', Finish='2021-10-20', Resource='低级'), dict(Task="李四", Start='2021-10-1', Finish='2021-10-10', Resource='高级'), dict(Task="王五", Start='2021-10-5', Finish='2021-10-25', Resource='高级'), dict(Task="没有日期", Start='', Finish='', Resource='低级'), dict(Task="赵六", Start='2021-10-10', Finish='2021-10-20', Resource='低级'), dict(Task="赵六2", Start='2021-10-10', Finish='2021-11-2', Resource='低级'), ] colors=dict(中级="#FFD700",低级="#90EE90",高级="#F08080") fig = px.timeline( df, # 绘图数据 x_start="Start", # 开始时间 x_end="Finish", # 结束时间 y="Task", # y轴显示的数据 color="Resource", # 颜色设置 opacity=0.7, title='这是甘特图标题', template='plotly', #值:plotly_white,plotly,plotly_dark color_discrete_map=colors, ) # y轴实施翻转,日期小的显示在上面,showgrid=True创建横向表格线,也可以通过update_layout中设置 # fig.update_yaxes(autorange="reversed",showgrid=True) fig.update_yaxes(autorange="reversed") # fig.update_layout(xaxis=dict(title='这是x轴标题', tickmode='linear', tickformat='%Y-%m-%d'),yaxis=dict(title='这是y轴标题')) fig.update_layout(xaxis=dict(title='这是x轴标题', tickmode='linear', tickformat='%m-%d'),yaxis=dict(title='这是y轴标题',showgrid=True)) #tickformat参数,使用的d3-time-format:解析和格式化时间 # fig.show() fig.write_html('1.html') taetgqntt()
注意:
tickformat参数格式使用的d3-time-format:解析和格式化时间,具体参数如下
%a:星期的缩写 // Thu
%A:星期的全称 // Thursday
%b:月的缩写 // Jan
%B:月的全称 // January
%d:在本月的天数, 不足2位用0补全 [01, 31]
%e:在本月的天数, 不足2位用空格补全 [ 1, 31]
%H:小时, 24小时制 [00, 23]
%I:小时, 12小时制 [01, 12]
%j:在本年中的天数 [001, 366]
%m:月份 [01, 12]
%M:分钟 [00, 59]
%L:毫秒 [000, 999]
%p:AM或PM
%S:秒 [00, 60]
%x:日期部分, 等同于”%m%d%Y”
%X:时间部分, 等同于”%H:%M:%S”
%y:不含纪元的年份 [00, 99]
%Y:包含纪年的4位数年份