我有时间戳和用户名的元组列表,我正在尝试绘制时间戳的频率图。
这意味着x轴将从最早的时间戳到最新的时间轴,y轴将显示一段时间内的频率。我也在寻找标记时间戳连接的用户名的方式(用不同的颜色等)。
我一直在谷歌搜索几个小时,但找不到任何能满足我要求的例子。这里有人能指出我正确的方向吗?
时间戳是纪元时间。例如:
lst= [('john', '1446302675'), ('elvis', '1446300605'),('peter','1446300622'), ...]
由于
答案 0 :(得分:0)
您可以通过简单地计算每个日期的用户来创建直方图,然后用条形图显示:
import numpy as np
import matplotlib.pyplot as plt
# some data
data=[('2013-05-15','test'),('2013-05-16','test'),('2013-05-14','user2'),('2013-05-14', 'user')]
# to create the histogram I use a dict()
hist = dict()
for x in data:
if x[0] in hist:
hist[x[0]] += 1
else:
hist[x[0]] = 1
# extract the labels and sort them
labels = [x for x in hist]
labels = sorted(labels)
# extract the values
values = [hist[x] for x in labels]
num = len(labels)
# now plot the values as bar chart
fig, ax = plt.subplots()
barwidth = 0.3
ax.bar(np.arange(num),values,barwidth)
ax.set_xticks(np.arange(num)+barwidth/2)
ax.set_xticklabels(labels)
plt.show()
这导致:
有关创建条形图的更多详细信息,请参阅[示例] (http://matplotlib.org/examples/api/barchart_demo.html)。
修改1 :使用您添加的数据格式,您可以使用this方法转换时间戳来使用我的示例:
>>> from datetime import datetime
>>> datetime.fromtimestamp(float('1446302675')).strftime('%Y-%m-%d %H:%M:%S')
'2015-10-31 15:44:35'
如果您只想使用年月日,那么您可以使用:
>>> datetime.fromtimestamp(float('1446302675')).strftime('%Y-%m-%d')
'2015-10-31'