Edited at

matplotlibを使って時系列グラフを書いてみる

More than 1 year has passed since last update.


環境

MacOS Yosemiteで動作確認


Install

$ pip install matplotlib


設定

そのまま使うと下のようなエラーがでるので、http://stackoverflow.com/questions/21784641/installation-issue-with-matplotlib-python

を参考に~/.matplotlib/matplotlibrcbackend: TkAggを書いておく

Python is not installed as a framework. The Mac OS X backend will not be able to function

correctly if Python is not installed as a framework. See the Python documentation for
more information on installing Python as a framework on Mac OS X. Please either reinstall
Python as a framework, or try one of the other backends.


ヒストグラムを書いてみる

import sys

from datetime import datetime
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.dates as mdates

date = []
for line in sys.stdin:
yymm = line.rstrip()[:-3]
if yymm:
date.append(datetime.strptime(yymm, '%y/%m'))
fig, ax = plt.subplots(1,1)

d = mdates.date2num(date)
ax.hist(d, bins=50)
ax.xaxis.set_major_locator(mdates.MonthLocator())
#ax.xaxis.set_major_locator(mdates.AutoDateLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%y/%m'))
plt.show()

ax.xaxis.set_major_locatorの部分で指定しているmdates.AutoDateLocator()の部分を変更するとx軸の単位を指定できる。mdates.MonthLocator()を指定すると月ごとになる。mdates.YearLocator()だと年ごと。


mdates.MonthLocator()を指定した場合


Screen Shot 2017-02-28 at 16.51.51.jpg

mdates.YearLocater()を指定した場合


Screen Shot 2017-02-28 at 16.53.29.jpg

ax.histbinsの数を大きくするとグラフの幅が狭くなる


bins=100


Screen Shot 2017-02-28 at 16.56.48.jpg

bins=19

Screen Shot 2017-02-28 at 17.00.40.jpg

アイテムの数と同じ数をbinsに指定するとこんな感じになる。