箱髭図の値
箱髭図の各値(中央値、箱の上端、箱の下端、髭の上端、髭の下端、外れ値)を取り出す。
下記の例では、図の右側に空きを作るため、空の箱髭図を二つプロットするという姑息な事をしている。
(2012/12/31追記: こちら に、図を縮小して空きを作り、そのスペースに文字列を表示する方法を説明)
import random import dateutil.parser as parser import matplotlib.pyplot as plt import matplotlib.dates as mdates def plot(): val = [] val.append([random.normalvariate(0,100) for j in range(10000)]) val.append([random.normalvariate(20,50) for j in range(10000)]) val.append([]) val.append([]) fig = plt.figure() ax = fig.add_subplot(1,1,1) ax.set_ylim([-400,400]) ax.grid() ax.set_xticklabels(["A","B","",""]) bp = ax.boxplot(val) txt = "A info:\n" txt += "Median = %.2f\n"%bp["medians"][0].get_ydata()[0] txt += "3rd Quartile = %.2f\n"%bp["boxes"][0].get_ydata()[2] txt += "1st Quartile = %.2f\n"%bp["boxes"][0].get_ydata()[0] txt += "Upper Whisker = %.2f\n"%bp["whiskers"][1].get_ydata()[1] txt += "Lower Whisker = %.2f\n"%bp["whiskers"][0].get_ydata()[1] txt += "Highest Flier = %.2f\n"%sorted(bp["fliers"][0].get_ydata())[-1] txt += "Lowest Flier = %.2f\n"%sorted(bp["fliers"][1].get_ydata())[0] txt += "\n" txt += "B info:\n" txt += "Median = %.2f\n"%bp["medians"][1].get_ydata()[0] txt += "3rd Quartile = %.2f\n"%bp["boxes"][1].get_ydata()[2] txt += "1st Quartile = %.2f\n"%bp["boxes"][1].get_ydata()[0] txt += "Upper Whisker = %.2f\n"%bp["whiskers"][3].get_ydata()[1] txt += "Lower Whisker = %.2f\n"%bp["whiskers"][2].get_ydata()[1] txt += "Highest Flier = %.2f\n"%sorted(bp["fliers"][2].get_ydata())[-1] txt += "Lowest Flier = %.2f\n"%sorted(bp["fliers"][3].get_ydata())[0] ax.text(3.0, -250 , txt, fontsize=12) plt.savefig('test.png') if __name__=="__main__": plot()
※boxplot関数の返り値に関して、より詳しくは http://www.mail-archive.com/matplotlib-users@lists.sourceforge.net/msg25055.htm を参照。