如何在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.timeline
和 create_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中为相同的并行机器创建甘特图?的主要内容,如果未能解决你的问题,请参考以下文章