web-dev-qa-db-ja.com

matplotlibのヒストグラム、x軸の時間

私は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

長年にわたって多くのポイントがあるので、start date 私の〜の上に x-Axis そしてその end date、次にマークn-time steps(つまり、1年のステップ)そして、binsの数を最終的に決定します。

どうすればそれを達成できますか?

23
Stophface

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

36
hitzg

Hitzgの答えに追加するには、AutoDateLocatorAutoDateFormatterを使用して、matplotlibに場所とフォーマットを行わせます。

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

enter image description here

13
Will Vousden