pyplot으로 Gantt 차트를 만들어 보았습니다.
5748 단어 파이썬byplotmatplotlib
Summary
코드
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime as dt
# 描画用データ、csvなどから取り込んでこの形にしても良い
periods = [
["one", dt.datetime(2021, 4, 1), dt.datetime(2021, 8, 1)],
["two", dt.datetime(2021, 6, 1), dt.datetime(2021, 8, 1)],
["three", dt.datetime(2021, 8, 1), dt.datetime(2021, 10, 1)],
]
# barhがy軸正方向に描画していくので、ガントチャートらしくなるよう逆向きにする
periods.reverse()
# periodsが2重のlistになっているので、行と列を入れ替えて取り出す
titles, begins, ends = list(zip(*periods))
# pyplot内でDatesとして扱われるように変換
edate, bdate = [mdates.date2num(item) for item in (ends, begins)]
# 実際に描画
fig, ax = plt.subplots()
ax.barh(y=titles, width=edate - bdate, left=bdate)
# 横軸目盛の表示形式をdateに変更する
ax.xaxis_date()
# 描画
plt.savefig("hoge.png")
#plt.show()
보충 정보
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime as dt
# 描画用データ、csvなどから取り込んでこの形にしても良い
periods = [
["one", dt.datetime(2021, 4, 1), dt.datetime(2021, 8, 1)],
["two", dt.datetime(2021, 6, 1), dt.datetime(2021, 8, 1)],
["three", dt.datetime(2021, 8, 1), dt.datetime(2021, 10, 1)],
]
# barhがy軸正方向に描画していくので、ガントチャートらしくなるよう逆向きにする
periods.reverse()
# periodsが2重のlistになっているので、行と列を入れ替えて取り出す
titles, begins, ends = list(zip(*periods))
# pyplot内でDatesとして扱われるように変換
edate, bdate = [mdates.date2num(item) for item in (ends, begins)]
# 実際に描画
fig, ax = plt.subplots()
ax.barh(y=titles, width=edate - bdate, left=bdate)
# 横軸目盛の表示形式をdateに変更する
ax.xaxis_date()
# 描画
plt.savefig("hoge.png")
#plt.show()
plt.subplots(figsize=(12, 6))
등으로 그래프를 가로로 늘립니다.fig.subplots_adjust(left=0.5, right=0.95)
등으로 yticks 라벨의 영역을 늘릴 수 있습니다 ax.barh(y=range(len(titles), ...)
ax.yticks(range(len(titles)), titles)
로 titles의 순서대로 할 수 있다ax.xaxis.set_major_formatter()
에서 x 축의 표시 형식을 만지기 ax.xaxis.set_major_locator()
로 주 눈금, minor
로 하면 보조 눈금의 간격을 만지bdate
등과 같은 용도로 xticks
를 만들고 ax.set_xticks(xticks, minor=False)
ax.set_xlim(bdate[-1], edate[0])
등으로 정렬된다 Reference
이 문제에 관하여(pyplot으로 Gantt 차트를 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/11kenterada/items/22537eeab6e5f1acccfe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)