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