私は、ガントチャートをプロットしようとしています。ある期間、異なる仕事をする一連のマシンがあります。私は、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()
あなたは、効率とはどういう意味ですか? 100 * 400は計算効率にはあまり関係ありません。 – sascha
実際にはデータセットには2000行のようなものがあります。私はプロットのための異なった機械そして仕事のためのリストを統合するためにすべてこれを馬鹿にループし続ける、非常に長い時間がかかる。 – seimetz
まだ聞こえます。あなたのコードを表示しなくても、問題の正確な情報(例えば、前処理や最終的なplt.plot()呼び出しなど)を追加する必要はありません。 – sascha