Я пробовал несколько часов, чтобы выполнить эту работу. Я попробовал использовать пакет «python-gantt», без везения. Я также попытался замыслить (что было красиво, но я не могу размещать свои конфиденциальные данные на своем сайте, чтобы это не сработало).Создать диаграмму gantt с hlines?
Мой отправной точкой является код здесь: How to plot stacked event duration (Gantt Charts) using Python Pandas?
Три Требования:
- Включить «Имя» на оси у, а не числа.
- Если у кого-то есть несколько событий, поместите все периоды событий на одну строку (это упростит идентификацию шаблона), например. У Лизы будет только одна линия на визуальном.
- Включите «Событие», указанное в верхней части соответствующей строки (если возможно), например. Первая линия Лизы сказала бы «Нанять».
код необходимо будет динамичным, чтобы разместить много больше людей и больше возможных типов событий ...
Я открыт для предложений, чтобы представить себе: Я хочу, чтобы показать длительность различных кадровых мероприятий в течение год, чтобы помочь выявить закономерности.
from datetime import datetime
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as dt
df = pd.DataFrame({'Name': ['Joe','Joe','Lisa','Lisa','Lisa','Alice'],
'Event': ['Hire','Term','Hire','Transfer','Term','Term'],
'Start_Date': ["2014-01-01","2014-02-01","2015-01-01","2015-02-01","2015-03-01","2016-01-01"],
'End_Date': ["2014-01-31","2014-03-15","2015-01-31","2015-02-28","2015-05-01","2016-09-01"]
})
df = df[['Name','Event','Start_Date','End_Date']]
df.Start_Date = pd.to_datetime(df.Start_Date).astype(datetime)
df.End_Date = pd.to_datetime(df.End_Date).astype(datetime)
fig = plt.figure()
ax = fig.add_subplot(111)
ax = ax.xaxis_date()
ax = plt.hlines(df.index, dt.date2num(df.Start_Date), dt.date2num(df.End_Date))