【发布时间】:2019-01-01 11:16:32
【问题描述】:
我希望使用 matplotlib 绘制一个时间线条形图,该条形图将显示一个人在一天内所做的事情。我正在添加下面的代码、输出和我正在寻找的预期输出。可以使用任何库,在我的情况下,我可以使用的壁橱使用 matplotlib。任何帮助将不胜感激。
import datetime as dt
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
data = [ (dt.datetime(2018, 7, 17, 0, 15), dt.datetime(2018, 7, 17, 0, 30), 'sleep'),
(dt.datetime(2018, 7, 17, 0, 30), dt.datetime(2018, 7, 17, 0, 45), 'eat'),
(dt.datetime(2018, 7, 17, 0, 45), dt.datetime(2018, 7, 17, 1, 0), 'work'),
(dt.datetime(2018, 7, 17, 1, 0), dt.datetime(2018, 7, 17, 1, 30), 'sleep'),
(dt.datetime(2018, 7, 17, 1, 15), dt.datetime(2018, 7, 17, 1, 30), 'eat'),
(dt.datetime(2018, 7, 17, 1, 30), dt.datetime(2018, 7, 17, 1, 45), 'work')
]
rng=[]
for i in range(len(data)):
rng.append((data[i][0]).strftime('%H:%M'))
index={}
activity = []
for i in range(len(data)):
index[(data[i][2])]=[]
activity.append(data[i][2])
for i in range(len(index)):
for j in range(len(activity)):
if activity[j]==index.keys()[i]:
index[index.keys()[i]].append(15)
else:
index[index.keys()[i]].append(0)
data = list(index.values())
df = pd.DataFrame(data,index=list(index.keys()))
df.plot.barh(stacked=True, sharex=False)
plt.show()
我的输出:
使用 matplotlib 这就是我得到的
预期输出:
我使用谷歌图表时间线图得到了这个,但我需要这个使用 python 并且用于生成两个图表的数据不完全相同,我希望你明白这一点
【问题讨论】:
-
你的代码有问题@index[(data[i][3])]=[]
标签: python-2.7 pandas numpy matplotlib