Plotly Express timeline for Gantt Chart with integer xaxis?(带整数X轴的甘特图的快速绘图时间线?)
本文介绍了带整数X轴的甘特图的快速绘图时间线?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用Plot Express时间线按照以下示例生成甘特图:https://medium.com/dev-genius/gantt-charts-in-python-with-plotly-e7213f932f1e
它会自动将x轴设置为使用日期,但我实际上只想使用整数(即项目启动+1、项目启动+6等)。
有没有办法不使用X轴的日期来绘制时间线图?
如果我尝试使用整数,它会将它们视为毫秒。
推荐答案
答案:
是的,有可能!只需提供整数作为开始日期和结束日期,计算它们之间的差异(delta),然后对fig进行以下更改:
fig.layout.xaxis.type = 'linear'
fig.data[0].x = df.delta.tolist()
绘图
详情:
实际上有一种方法可以实现这一点,尽管docs声明:
默认情况下,px.timeline函数将X轴设置为 type=date,因此可以像任何时间序列图一样进行配置。
,因此px.timeline()中的所有其他功能似乎都围绕着这一事实。但是,如果您只是忽略这一点,并使用整数作为Start和Finish的值,那么您可以调整一些属性来获得您想要的结果。您只需要计算一下每个Start和Stop之间的差异。例如:
df = pd.DataFrame([
dict(Task="Job A", Start=1, Finish=4),
dict(Task="Job B", Start=2, Finish=6),
dict(Task="Job C", Start=3, Finish=10)
])
df['delta'] = df['Finish'] - df['Start']
然后进一步调整:
fig.layout.xaxis.type = 'linear'
fig.data[0].x = df.delta.tolist()
完整代码:
import plotly.express as px
import pandas as pd
df = pd.DataFrame([
dict(Task="Job A", Start=1, Finish=4),
dict(Task="Job B", Start=2, Finish=6),
dict(Task="Job C", Start=3, Finish=10)
])
df['delta'] = df['Finish'] - df['Start']
fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task")
fig.update_yaxes(autorange="reversed")
fig.layout.xaxis.type = 'linear'
fig.data[0].x = df.delta.tolist()
f = fig.full_figure_for_development(warn=False)
fig.show()
这篇关于带整数X轴的甘特图的快速绘图时间线?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
编程基础网
本文标题为:带整数X轴的甘特图的快速绘图时间线?
基础教程推荐
猜你喜欢
- Discord.py 缺少必需的参数 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
