Ich habe mehrere Stunden versucht, diese Arbeit zu machen. Ich habe versucht, Python-Gantt-Paket zu verwenden, ohne Glück. Ich habe auch versucht, plotly (das war schön, aber ich kann nicht meine sensiblen Daten auf ihrer Website hosten, so dass es nicht funktioniert).Gantt-Diagramm mit Linien erstellen?
Mein Ausgangspunkt ist der Code von hier: How to plot stacked event duration (Gantt Charts) using Python Pandas?
Drei Anforderungen:
- Fügen Sie den 'Namen' auf der y-Achse, anstatt die Zahlen.
- Wenn mehrere Ereignisse vorhanden sind, legen Sie alle Ereigniszeiträume auf eine Zeile (dies erleichtert die Mustererkennung), z. Lisa wird nur eine Zeile auf dem Bild haben.
- Fügen Sie das "Ereignis" oben auf der entsprechenden Zeile (wenn möglich) ein, z. Lisas erste Zeile würde "Hire" sagen.
Der Code muss dynamisch sein viel mehr Menschen aufnehmen und mehr möglich Ereignistypen ...
Ich bin offen für Vorschläge zu visualisieren: Ich habe die Dauer für verschiedene Personal Veranstaltungen während zeigen wollen das Jahr, um Muster zu identifizieren.
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))