matplotlib中的直方图,x轴上的时间

Sto*_*ace 25 python time plot matplotlib histogram

我是matplotlib(1.3.1-2)的新手,我找不到合适的起点.我想用matplotlib在直方图中绘制点随时间的分布.

基本上我想绘制一个日期的累积总和.

date
2011-12-13
2011-12-13
2013-11-01
2013-11-01
2013-06-04
2013-06-04
2014-01-01
...
Run Code Online (Sandbox Code Playgroud)

这会

2011-12-13 -> 2 times
2013-11-01 -> 3 times
2013-06-04 -> 2 times
2014-01-01 -> once
Run Code Online (Sandbox Code Playgroud)

由于多年来会有很多积分,我想设置start date我的x-Axisend date,然后标记n-time steps(即1年步骤),最后确定bins将有多少.

我怎么做到这一点?

hit*_*tzg 39

Matplotlib使用自己的日期/时间格式,但也提供简单的函数来转换dates模块中提供的函数.它还提供各种功能,LocatorsFormatters负责将刻度线放在轴上并格式化相应的标签.这应该让你开始:

import random
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# generate some random data (approximately over 5 years)
data = [float(random.randint(1271517521, 1429197513)) for _ in range(1000)]

# convert the epoch format to matplotlib date format 
mpl_data = mdates.epoch2num(data)

# plot it
fig, ax = plt.subplots(1,1)
ax.hist(mpl_data, bins=50, color='lightblue')
ax.xaxis.set_major_locator(mdates.YearLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d.%m.%y'))
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述


Wil*_*den 14

要添加到hitzg的答案,您可以使用AutoDateLocatorAutoDateFormatter让matplotlib为您执行位置和格式设置:

locator = mdates.AutoDateLocator()
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(mdates.AutoDateFormatter(locator))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述