【问题标题】:Gantt Chart python machine scheduling甘特图python机器调度
【发布时间】:2017-02-02 13:04:30
【问题描述】:

我在尝试使用 python 从数据集中绘制甘特图时遇到了一些麻烦。我有一组机器在一段时间内处理不同的任务。我想制作一个甘特图,以 y 轴显示机器,x 轴显示每项任务所花费的时间。 每台机器应该在 y 轴上只出现一次,以便更容易看到我希望每个任务使用相同颜色的任务。

这个想法是检查奇怪的事情,例如两台或多台机器一起处理相同的任务。

让我通过一个小例子来展示我拥有的数据集:

machine   equipment   start   finish
  m1         e2       date1    date2
  m2         e2       date3    date4
  m1         e1       date5    date6
  m3         e3       date7    date8
  m3         e4       date9    date10

我尝试使用 matplotlib 中的 broken_barh,但我无法找到有效地为绘图添加数据的方法。因为我有 100 台机器和 400 个任务。

Here is a picture 显示输出应该是什么样子。

当前代码如下:

import datetime as dt

machines = set(list(mydata["machine"]))
tasks = set(list(mydata["task"]))

fig, ax = plt.subplots(figsize=(20, 10))

yrange = 5 # y width of gantt bar
ymin = 0
orign = min(list(mydata["start"])) # time origin

for i in machines:

    stdur = [] # list of tuples (start, duration)
    ymin = index*6 # start y of gantt bar

    for index, row in mydata.iterrows():

        if row["machine"] == i:
            start = (row["start"] -  orign).total_seconds()/3600
            duration = (row["finish"] -  row["start"]).total_seconds()/3600

            stdur.append((start,duration))

    ax.broken_barh(stdur,(ymin,yrange))

ax.set_xlabel('Time')
ax.set_yticklabels(machines)

plt.show()

【问题讨论】:

  • 效率是什么意思? 100*400 对于计算效率来说并不多。
  • 实际上数据集有大约 2000 行。我一直天真地循环所有这些以合并不同机器和任务的列表,这将需要很长时间。
  • 听起来还是可行的。我认为如果您不显示您的代码/提供更多信息究竟是什么问题(例如预处理或最终 plt.plot() 调用),没有太多帮助。
  • 好点。我将编辑问题

标签: python matplotlib job-scheduling gantt-chart


【解决方案1】:

赛米茨,

如果您可以将整个数据传递给客户端并让 JS 甘特图来做这件事,那么 RadiantQ jQuery 甘特图包将是您更好的选择。这是一个类似的在线演示: http://demos.radiantq.com/jQueryGanttDemo/Samples/ServerStatusWithHugeData.htm

这是它的外观: Server Status Sample

更多关于产品的信息: http://radiantq.com/products/jquery-gantt-package/jquery-gantt-package-features/

【讨论】:

    猜你喜欢
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    相关资源
    最近更新 更多