【发布时间】:2019-11-10 05:23:36
【问题描述】:
我在每个任务的数据框中都有数据,包括开始时间、结束时间和状态。 我想为此绘制一个甘特图。我尝试关注关于 stackoverflow 的其他问题(link),但他们使用了数值,因此无法使用它们。下面是代码。
import pandas as pd
import matplotlib.pyplot as plt
data = [['A', '2019-06-27 18:33:58.033', '2019-06-27 19:54:04.658', 'Success'], ['B', '2019-06-27 19:54:04.957', '2019-06-27 19:54:14.570', 'Success'], ['B', '2019-06-27 19:54:04.963', '2019-06-27 19:54:19.928', 'Failed']]
#Converting List to a dataframe
df = pd.DataFrame(data, columns = ['Task', 'Start Time', 'End Time', 'Status'])
#Calculating the Time Difference
df['Duration'] = pd.to_datetime(df['End Time']) - pd.to_datetime(df['Start Time'])
color = {"Success":"turquoise", "Failed":"crimson"}
fig,ax=plt.subplots(figsize=(6,3))
labels=[]
for i, task in enumerate(df.groupby("Task")):
labels.append(task[0])
for r in task[1].groupby("Status"):
data = r[1][["Start Time", "Duration"]]
ax.broken_barh(data.values, (i-0.4,0.8), color=color[r[0]] )
ax.set_yticks(range(len(labels)))
ax.set_yticklabels(labels)
ax.set_xlabel("time [ms]")
plt.tight_layout()
plt.show()
它没有显示正确的图表,可能是由于时间格式。如果我使用十进制数字代替时间,上面的代码效果很好。这里有任何帮助。
【问题讨论】:
-
看看这个stackoverflow.com/questions/11042290/…,broken_barh 期望数字因此你可以做同样的事情来改变你的日期时间
标签: python matplotlib gantt-chart