箱髭図のプロット, その2

横軸を2010年1月〜4月の日付とし、各日[10-50]間の乱数を100個生成し、それを箱髭図としてプロット。
横軸のラベルの表示を毎月1日、15日のみにする。


import random
import dateutil.parser as parser
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

def plot():
    x = []
    x.extend([parser.parse("2010/01/%02d"%dd) for dd in range(1,31+1)])
    x.extend([parser.parse("2010/02/%02d"%dd) for dd in range(1,28+1)])
    x.extend([parser.parse("2010/03/%02d"%dd) for dd in range(1,31+1)])
    x.extend([parser.parse("2010/04/%02d"%dd) for dd in range(1,30+1)])

    val = []
    for i in range(len(x)):
        val.append([random.randint(10,50) for j in range(100)])
    

    fig = plt.figure()
    ax = fig.add_subplot(1,1,1)    

    ax.set_ylim([0,100])
    ax.grid()
    ax.boxplot(val,positions=mdates.date2num(x))

    days = mdates.DayLocator(bymonthday=[1,15])
    daysFmt = mdates.DateFormatter("%b/%d")
    ax.xaxis.set_major_locator(days)
    ax.xaxis.set_major_formatter(daysFmt)
    
    plt.savefig('test.png')


if __name__=="__main__":
    plot()