Python 机器调度的甘特图
我在用python从数据集中绘制甘特图时遇到了一些麻烦。我有一套机器,在一段时间内处理不同的任务。我想制作一个甘特图,通过y轴显示机器,x轴显示每个任务花费的时间。 每台机器应该只在y轴上出现一次,以便更容易地看到我希望每个任务具有相同颜色的任务 这个想法是检查一些奇怪的事情,比如两台或多台机器同时处理同一个任务 让我用一个小例子来说明我拥有的数据集:Python 机器调度的甘特图,python,matplotlib,job-scheduling,gantt-chart,Python,Matplotlib,Job Scheduling,Gantt Chart,我在用python从数据集中绘制甘特图时遇到了一些麻烦。我有一套机器,在一段时间内处理不同的任务。我想制作一个甘特图,通过y轴显示机器,x轴显示每个任务花费的时间。 每台机器应该只在y轴上出现一次,以便更容易地看到我希望每个任务具有相同颜色的任务 这个想法是检查一些奇怪的事情,比如两台或多台机器同时处理同一个任务 让我用一个小例子来说明我拥有的数据集: machine equipment start finish m1 e2 date1 date
machine equipment start finish
m1 e2 date1 date2
m2 e2 date3 date4
m1 e1 date5 date6
m3 e3 date7 date8
m3 e4 date9 date10
我尝试使用from matplotlib,但无法找到有效地为绘图添加数据的方法。因为我有100台机器和400个任务
以显示输出的外观
当前代码如下:
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()
塞梅茨
如果您可以将整个数据传递给客户机,并让JS甘特完成它的工作,那么RadiantQ jQuery甘特包将是一个更好的选择。以下是类似内容的在线演示:
这就是它的样子:
有关产品的更多信息,请点击此处:
Seimetz
如果您可以将整个数据传递给客户机,并让JS甘特完成它的工作,那么RadiantQ jQuery甘特包将是一个更好的选择。以下是类似内容的在线演示:
这就是它的样子:
有关产品的更多信息,请点击此处:
你所说的效率是什么意思?100*400的计算效率并不高。实际上,数据集大约有2000行。我一直天真地循环所有这些来整合不同机器和任务的列表,这需要很长时间。听起来仍然可行。我认为如果你不展示你的代码/提供更多的信息(例如,预处理或最终的plt.plot()调用),就没有什么帮助了。这一点很好。我来编辑这个问题你说的效率是什么意思?100*400的计算效率并不高。实际上,数据集大约有2000行。我一直天真地循环所有这些来整合不同机器和任务的列表,这需要很长时间。听起来仍然可行。我认为如果你不展示你的代码/提供更多的信息(例如,预处理或最终的plt.plot()调用),就没有什么帮助了。这一点很好。我将编辑这个问题