使用pyplot绘制元组和字符串

时间:2015-10-31 20:30:50

标签: python datetime matplotlib

我有时间戳和用户名的元组列表,我正在尝试绘制时间戳的频率图。

这意味着x轴将从最早的时间戳到最新的时间轴,y轴将显示一段时间内的频率。我也在寻找标记时间戳连接的用户名的方式(用不同的颜色等)。

我一直在谷歌搜索几个小时,但找不到任何能满足我要求的例子。这里有人能指出我正确的方向吗?

时间戳是纪元时间。例如:

lst= [('john', '1446302675'), ('elvis', '1446300605'),('peter','1446300622'), ...]

由于

1 个答案:

答案 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()

这导致:

resulting figure

有关创建条形图的更多详细信息,请参阅[示例] (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'