2015-04-16 3 views
13

Я новичок в matplotlib (1.3.1-2), и я не могу найти достойное место для начала. Я хочу построить распределение точек по времени в гистограмме с помощью matplotlib.Гистограмма в matplotlib, время на оси x

В принципе, я хочу построить совокупную сумму наступления даты.

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 

Так будет много очков в течение многих лет, я хочу, чтобы установить start date на моем x-Axis и end date, а затем отметьте n-time steps (т.е. шаги 1 год) и, наконец, решить, сколько bins будет.

Как я могу это достичь?

+0

Какой формат имеет ваши данные? 'datetime' объекты? – hitzg

+0

@hitzg Unix timecode. но я могу переформатировать в 'datetime' – Stophface

ответ

24

Matplotlib использует собственный формат для дат/времени, но также предоставляет простые функции для преобразования, которые предусмотрены в модуле 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() 

Результат:

enter image description here

+0

awesome. только то, что я искал. Благодаря! – Stophface

7

Чтобы добавить ответ hitzg, вы можете использовать AutoDateLocator и AutoDateFormatter иметь Matplotlib сделать расположение и форматирование для вас:

locator = mdates.AutoDateLocator() 
ax.xaxis.set_major_locator(locator) 
ax.xaxis.set_major_formatter(mdates.AutoDateFormatter(locator)) 

enter image description here

Смежные вопросы