2016-09-24 1 views
1

私は、ガントチャートをプロットしようとしています。ある期間、異なる仕事をする一連のマシンがあります。私は、y軸でマシンを、x軸に各タスクに費やした時間を示すガントチャートを作成したい。 各マシンはy軸上に1度しか表示されず、各タスクで同じ色が必要なタスクを見やすくする必要があります。ガントチャートのpythonマシンのスケジューリング

アイデアは、2つ以上のマシンで同じタスクを処理しているような奇妙なことをチェックすることです。

私は小さな例で持っているもののデータセット見せしましょう:

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() 
+0

あなたは、効率とはどういう意味ですか? 100 * 400は計算効率にはあまり関係ありません。 – sascha

+0

実際にはデータセットには2000行のようなものがあります。私はプロットのための異なった機械そして仕事のためのリストを統合するためにすべてこれを馬鹿にループし続ける、非常に長い時間がかかる。 – seimetz

+0

まだ聞こえます。あなたのコードを表示しなくても、問題の正確な情報(例えば、前処理や最終的なplt.plot()呼び出しなど)を追加する必要はありません。 – sascha

答えて

0

Seimetz、

あなたがクライアントに全データを渡すと、それはことだ行う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/

関連する問題