带整数X轴的甘特图的快速绘图时间线?

2024-08-10Python开发问题
3

本文介绍了带整数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()中的所有其他功能似乎都围绕着这一事实。但是,如果您只是忽略这一点,并使用整数作为StartFinish的值,那么您可以调整一些属性来获得您想要的结果。您只需要计算一下每个StartStop之间的差异。例如:

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轴的甘特图的快速绘图时间线?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

在xarray中按单个维度的多个坐标分组
groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)...
2024-08-22 Python开发问题
15

Pandas中的GROUP BY AND SUM不丢失列
Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)...
2024-08-22 Python开发问题
17

GROUP BY+新列+基于条件的前一行抓取值
Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)...
2024-08-22 Python开发问题
18

PANDA中的Groupby算法和插值算法
Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)...
2024-08-22 Python开发问题
11

PANAS-基于列对行进行分组,并将NaN替换为非空值
Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)...
2024-08-22 Python开发问题
10

按10分钟间隔对 pandas 数据帧进行分组
Grouping pandas DataFrame by 10 minute intervals(按10分钟间隔对 pandas 数据帧进行分组)...
2024-08-22 Python开发问题
11