시작하기 전에 import 하기
import plotly.express as px import plotly.graph_objects as go import plotly.express as px import numpy as np
Gantt Chart 시간 경과에 따른 프로젝트 계획을 시각화하는방법으로 어떤 작업이 언제, 누구에 의해 완료될 예정인지 보여줍니다
Plotly를 활용하여 Gantt Chart 를 그리는 방법에 대해 알아보도록 하겠습니다.
Keyword : Plotly Gantt Chart, Plotly 간트 차트, px.timeline
px.timeline() 함수를 사용하여 구현합니다.
Input 데이터의 x축은 ISO 형식의 날짜 문자열 또는 판다스 date 컬럼 또는 datetime 넘파이 array 형식을 갖춰야만 합니다
import plotly.express as px import pandas as pd # 데이터셋 만들기 df = pd.DataFrame([ dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28'), dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15'), dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30') ]) # Gantt Chart 만들기 fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task") # 위에서부터 시작하게 Y축 역방향으로 설정 fig.update_yaxes(autorange="reversed") fig.show()
[사용 함수]
px.timeline()
[함수 input 내용]
data_frame = pandas 데이터 프레임
x_start= 일정 시작 열
x_end= 일정 끝 열
y = y축 범주형 데이터
간트 차트 내에 범주형 데이터 구분을 색을 통해 가능합니다. 주로 프로젝트 별 담당자를 구분할 때 사용합니다.
import plotly.express as px import pandas as pd # 데이터셋 만들기 df = pd.DataFrame([ dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Resource="Alex"), dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15', Resource="Alex"), dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30', Resource="Max") ]) # Gantt Chart 만들기 fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Resource") # 위에서부터 시작하게 Y축 역방향으로 설정 fig.update_yaxes(autorange="reversed") fig.show()
간트 차트 내에 연속형 데이터는 구분을 colormap을 활용해 표현 가능합니다. 주로 프로잭트 별 수행도 백분율을 표시할 때 사용됩니다.
import plotly.express as px import pandas as pd # 데이터셋 만들기 df = pd.DataFrame([ dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Completion_pct=50), dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15',Completion_pct=25), dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30', Completion_pct=75) ]) # Gantt Chart 만들기 fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Completion_pct") # 위에서부터 시작하게 Y축 역방향으로 설정 fig.update_yaxes(autorange="reversed") fig.show()