问题描述
我是matplotlib(1.3.1-2)的新手,我找不到合适的起点.我想用matplotlib在直方图中绘制点的时间分布.
I am new to matplotlib (1.3.1-2) and I cannot find a decent place to start.I want to plot the distribution of points over time in a histogram with matplotlib.
基本上我想绘制一个日期出现的累积总和.
Basically I want to plot the cumulative sum of the occurrence of a date.
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
将会有.
Since there will be many points over many years, I want to set the start date
on my x-Axis
and the end date
, and then mark n-time steps
(i.e. 1 year steps) and finally decide how many bins
there will be.
我将如何实现?
推荐答案
Matplotlib使用自己的日期/时间格式,但还提供了简单的函数来转换dates
模块中提供的功能.它还提供了各种Locators
和Formatters
,用于将刻度线放置在轴上并格式化相应的标签.这应该可以帮助您开始:
Matplotlib uses its own format for dates/times, but also provides simple functions to convert which are provided in the dates
module. It also provides various Locators
and Formatters
that take care of placing the ticks on the axis and formatting the corresponding labels. This should get you started:
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()
结果:
这篇关于matplotlib中的直方图,x轴上的时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!