如何在python中为相同的并行机器创建甘特图?

Posted

技术标签:

【中文标题】如何在python中为相同的并行机器创建甘特图?【英文标题】:How to create a Gannt Chart for identical parallel machine in python? 【发布时间】:2021-10-14 16:40:51 【问题描述】:

我有一个包含以下数据的数据框:-

No.  TestName   Processing time
0       A            2
1       B            5
2       C            7
3       D            1

这只是我的数据框外观的一个示例,否则我的原始数据框由数千个测试名称组成,每个测试名称都有自己的处理时间。

我想为相同的并行机器环境创建甘特图。在这种情况下,两个相同的并行机器的甘特图。有人可以帮我吗?

仅供参考 - 在相同的并行机器中,我们有 M 台相同的机器和 N 个要处理的作业。每个作业都必须在其中一台机器上处理 pj 个时间单位而不中断,并且每个作业都可以在时间 0 处理。

两台相同的并行机预期输出:

【问题讨论】:

由于 plotly 的 px.timelinecreate_gantt 是基于时间序列的,因此用数字表示 x 轴是违反直觉且耗时的。可以使用另一个库altair 轻松创建带有数字轴的甘特图。如果您对此库感兴趣,我们随时准备在“altair”中回复您。 嗨@r-beginners 感谢您的回复。是的,如果我们可以使用 altair 库创建甘特图,请告诉我该怎么做? 【参考方案1】:

我还没有足够的 Altair 经验,但我已经创建了包含任务名称、起始值、结束值和机器名称的数据。我正在 Altair 中处理这些数据。图例字符串被切断了,所以我添加了一个边距。

import altair as alt
import pandas as pd

source = pd.DataFrame([
    "task": "TEST A", "start": 0, "end": 2, "machine":"M1",
    "task": "TEST B", "start": 2, "end": 9, "machine":"M1",
    "task": "TEST C", "start": 0, "end": 5, "machine":"M2",
    "task": "TEST D", "start": 5, "end": 6, "machine":"M2"
])

alt.Chart(source).mark_bar().encode(
    x='start',
    x2='end',
    y='machine',
    color=alt.Color('task:N',
                   legend=alt.Legend(padding=5))
).properties(
    width=700,
    height=200
)

【讨论】:

在我的数据框中我没有开始、结束和机器列 要在 Altair 中绘制图表,您至少需要此类数据。任何其他图表都是一样的。您的图表中有两条线的原因是数据系列不同。

以上是关于如何在python中为相同的并行机器创建甘特图?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 中为 64 位机器创建安装程序?

使用 plotly 将折线图/面积图创建为甘特图

使用 Python 的 USGS 水文数据甘特图?

如何在 Python 中为不和谐的机器人创建重新加载命令?

如何使用 Python Pandas 绘制堆叠事件持续时间(甘特图)

如何在Python中为多个不同的输入提供相同的输出?