matplotlib 中的直方图,x 轴上的时间
Histogram in matplotlib, time on x-Axis
我是 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
...
那会使
2011-12-13 -> 2 times
2013-11-01 -> 3 times
2013-06-04 -> 2 times
2014-01-01 -> once
由于很多年会有很多点,所以我想在我的x-Axis
和end date
上设置start date
,然后标记n-time steps
(即1 年步数)并最终决定 bins
的数量。
我将如何实现?
Matplotlib 使用自己的 dates/times 格式,但也提供了简单的转换函数,这些函数在 dates
模块中提供。它还提供各种 Locators
和 Formatters
来负责将刻度放置在轴上并格式化相应的标签。这应该让你开始:
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()
结果:
要添加到 hitzg 的答案,您可以使用 AutoDateLocator
和 AutoDateFormatter
让 matplotlib 为您进行定位和格式化:
locator = mdates.AutoDateLocator()
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(mdates.AutoDateFormatter(locator))
我是 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
...
那会使
2011-12-13 -> 2 times
2013-11-01 -> 3 times
2013-06-04 -> 2 times
2014-01-01 -> once
由于很多年会有很多点,所以我想在我的x-Axis
和end date
上设置start date
,然后标记n-time steps
(即1 年步数)并最终决定 bins
的数量。
我将如何实现?
Matplotlib 使用自己的 dates/times 格式,但也提供了简单的转换函数,这些函数在 dates
模块中提供。它还提供各种 Locators
和 Formatters
来负责将刻度放置在轴上并格式化相应的标签。这应该让你开始:
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()
结果:
要添加到 hitzg 的答案,您可以使用 AutoDateLocator
和 AutoDateFormatter
让 matplotlib 为您进行定位和格式化:
locator = mdates.AutoDateLocator()
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(mdates.AutoDateFormatter(locator))