前提・実現したいこと
Pythonのplotlyの機能を使ってガントチャートが作りたいと思っています。
作業者と機械の稼働状況を確認したいのですが、作業者3人を上側に機械2台を下側にしたいです。
発生している問題・エラーメッセージ
y軸のタスクが、Worker1,Machine1_process,Worker2,Machine2_processと交互になっています。
該当のソースコード
Python
1import plotly.express as px 2import plotly.io as pio 3import pandas as pd 4import datetime 5 6def plot_guntt_chart(data): 7 df = pd.DataFrame(columns = ["Task","Start","Finish","Resource","Job"]) 8 for i in data: 9 df = df.append(data[i],ignore_index = True) 10 fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task",color = "Resource",text = "Job",title = "guntt chart") 11 fig.update_yaxes(autorange="reversed") 12 fig.show() 13 14sample_data = { 151:{"Task":"Worker1", "Start": datetime.datetime(2021,11,1,9), "Finish":datetime.datetime(2021,11,1,10),"Resource":"Machine1","Job":"JOB1"}, 162:{"Task":"Worker2", "Start": datetime.datetime(2021,11,1,9), "Finish":datetime.datetime(2021,11,1,10),"Resource":"Machine2","Job":"JOB2"}, 173:{"Task":"Worker3", "Start": datetime.datetime(2021,11,1,9), "Finish":datetime.datetime(2021,11,1,10),"Resource":"Machine3","Job":"JOB3"}, 184:{"Task":"Worker3", "Start": datetime.datetime(2021,11,1,9), "Finish":datetime.datetime(2021,11,1,10),"Resource":"Machine3","Job":"JOB3"}, 195:{"Task":"Machine1_process", "Start": datetime.datetime(2021,11,1,10), "Finish":datetime.datetime(2021,11,1,11),"Resource":"Machine1","Job":"JOB1"}, 206:{"Task":"Worker3", "Start": datetime.datetime(2021,11,1,11), "Finish":datetime.datetime(2021,11,1,12),"Resource":"Machine3","Job":"JOB3"}, 217:{"Task":"Machine2_process", "Start": datetime.datetime(2021,11,1,10), "Finish":datetime.datetime(2021,11,1,11),"Resource":"Machine2","Job":"JOB2"} 22} 23plot_guntt_chart(sample_data)
利用環境
python:3.7.11
plotly:5.1.0
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/24 09:42