箱ひげ図
箱ひげ図の描画例である。データはExcelファイルとして図1のように用意する。
・
・
・
図1 temper.xlsx
2018年6月4日の日本気象協会によるアメダスの各地の最高気温のデータである。図1のファイルの形式は、1行目に変数名が置かれ、データは2行目以降に書かれている。1列目は、データの識別用で通し番号でも識別用文字列でもよい。2列目にヒストグラムを描くデータ値を設定する。この形式のExcelデータファイルに対して箱ひげ図を描くスクリプトを作成してみた。スクリプトファイルとデータファイルは圧縮ファイルfilesboxplot_nfd.zipにまとめたので、ダウンロード解凍すれば自由に利用できる。
スクリプト例を、箱ひげ図(横向き)、箱ひげ図(縦向き)、箱ひげ図(横向き、ストリッププロット付き)、箱ひげ図(縦向き、ストリッププロット付き)の順に示す。
本ウェブサイトのサンプルスクリプトの実行には、モジュールpandas、matplotlib、japanize_matplotlib、seaborn、openpyxlが必要である。これらは、コマンド
pip install
pandas matplotlib japanize_matplotlib seaborn openpyxl
の実行でインストールできる。既にインストール済みのものがあれば、それは無視される。
リスト1のスクリプトDrawBoxPlot_horizontal.pyを実行すると、入力データファイル名の設定が求められる(図2)
図2
図2では、図1のデータファイル名temper.xlsxが設定されいている。入力データファイル名を設定して「Enter」キーを押すと、次に画像保存用ファイル名の設定が求められる(図2)。画像保存先ファイル名はファイル拡張子を「.png」としておけば任意であるが、図3では「MyFigure.png」が設定されている。
保存先ファイル名を設定して「Enter」キーを押すと、データが読み込まれてグラフが描かれ、図3の箱ひげ図が表示される。
図3
図3のWindowを閉じると、スクリプトの実行終了である(図4)。
図4
スクリプトの実行終了後、保存画像ファイルを開くことができる。
リスト1 箱ひげ図描画スクリプト例(DrawBoxPlot_horizontal.py)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
# グラフで日本語表記を用いるため
finnm = input('入力データファイル(*.xlsx)= ')
foutnm = input('画像保存ファイル(*.png)= ')
#
# Excelファイルの読み込み
#
data_xlsx = pd.read_excel(finnm, header = None) # Excelファイルから読み込み、DataFrame型オブジェクトを生成
data = data_xlsx.values
# Dataframe型オブジェクトからnumpyの配列オブジェクトを生成
var_name = data[0,1]
values = data[1:].T[1]
plt.figure(figsize = (8, 6))
# 画像のサイズ
plt.boxplot(values, vert = False)
# 箱ひげ図(横向き)
plt.xticks(fontsize = 12)
# 横軸の目盛り文字の大きさ
plt.yticks([])
# 縦軸の目盛りなし
plt.xlabel(var_name, fontsize =
20) # 横軸の変数名
plt.savefig(foutnm)
# 画像の保存
print('保存画像ファイル:', foutnm)
plt.show()
# 画像の表示
リスト2のスクリプトDrawBoxPlot_vertical.pyを実行すると、入力データファイル名の設定が求められる(図2)
図5
図5では、図1のデータファイル名temper.xlsxが設定されいている。入力データファイル名を設定して「Enter」キーを押すと、次に画像保存用ファイル名の設定が求められる(図2)。画像保存先ファイル名はファイル拡張子を「.png」としておけば任意であるが、図3では「MyFigure.png」が設定されている。
保存先ファイル名を設定して「Enter」キーを押すと、データが読み込まれてグラフが描かれ、図6の箱ひげ図が表示される。
図6
図6のWindowを閉じると、スクリプトの実行終了である(図7)。
図7
スクリプトの実行終了後、保存画像ファイルを開くことができる。
リスト2 箱ひげ図描画スクリプト例(DrawBoxPlot_vertical.py)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
finnm = input('入力データファイル(*.xlsx)= ')
foutnm = input('画像保存ファイル(*.png)= ')
#
# Excelファイルの読み込み
#
data_xlsx = pd.read_excel(finnm, header = None) # ExcelファイルからDataFrame型オブジェクトを生成
data = data_xlsx.values
# Dataframe型オブジェクトからnumpyの配列オブジェクトを生成
var_name = data[0,1]
values = data[1:].T[1]
plt.figure(figsize = (8, 6))
# 画像のサイズ
plt.boxplot(values)
# 箱ひげ図(縦向き)
plt.xticks([])
# 横軸に何も表示しない
plt.yticks(fontsize=12)
# 縦軸の目盛り文字の大きさ
plt.ylabel(var_name, fontsize=20)
# 縦軸の変数名
plt.savefig(foutnm)
# 画像の保存
print('保存画像ファイル:', foutnm)
plt.show() # 画像の表示
リスト3のスクリプトDrawBoxPlot_horizontal_strip.pyを実行すると、入力データファイル名の設定が求められる(図2)
図8
図8では、図1のデータファイル名temper.xlsxが設定されいている。入力データファイル名を設定して「Enter」キーを押すと、次に画像保存用ファイル名の設定が求められる(図2)。画像保存先ファイル名はファイル拡張子を「.png」としておけば任意であるが、図8では「MyFigure.png」が設定されている。
保存先ファイル名を設定して「Enter」キーを押すと、データが読み込まれてグラフが描かれ、図9の箱ひげ図がストリッププロットとともに表示される。
図9
図9のWindowを閉じると、スクリプトの実行終了である(図10)。
図10
スクリプトの実行終了後、保存画像ファイルを開くことができる。
リスト3 箱ひげ図描画スクリプト例(DrawBoxPlot_horizontal_strip.py)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
# グラフで日本語表記を用いるためのモジュール
import seaborn as sb
finnm = input('入力データファイル(*.xlsx)= ')
foutnm = input('画像保存ファイル(*.png)= ')
#
# Excelファイルの読み込み
#
data_xlsx = pd.read_excel(finnm, header = None) # ExcelファイルからDataFrame型オブジェクトを生成
data = data_xlsx.values
# Dataframe型オブジェクトからnumpyの配列オブジェクトを生成
var_name = data[0,1]
values = data[1:].T[1]
plt.figure(figsize = (8, 6))
# 画像のサイズ
sb.boxplot(values, orient='h',
width=0.3) # 箱ひげ図(横向き)
sb.stripplot(values, orient='h')
# ストリッププロット(横向き)
plt.xticks(fontsize = 12)
# 横軸の目盛り文字の大きさ
plt.yticks([])
# 縦軸の目盛りなし
plt.xlabel(var_name, fontsize =
20)
# 横軸の変数名
plt.savefig(foutnm)
# 画像の保存
print('保存画像ファイル:', foutnm)
plt.show()
# 画像の表示
リスト4のスクリプトDrawBoxPlot_horizontal_strip.pyを実行すると、入力データファイル名の設定が求められる(図11)
図11
図8では、図1のデータファイル名temper.xlsxが設定されいている。入力データファイル名を設定して「Enter」キーを押すと、次に画像保存用ファイル名の設定が求められる(図2)。画像保存先ファイル名はファイル拡張子を「.png」としておけば任意であるが、図11では「MyFigure.png」が設定されている。
保存先ファイル名を設定して「Enter」キーを押すと、データが読み込まれてグラフが描かれ、図12の箱ひげ図がストリッププロットとともに表示される。
図12
図12のWindowを閉じると、スクリプトの実行終了である(図13)。
図13
スクリプトの実行終了後、保存画像ファイルを開くことができる。
リスト4 箱ひげ図描画スクリプト例(DrawBoxPlot_vertical_strip.py)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib # 日本語使用のため
import seaborn as sb
finnm = input('入力データファイル(*.xlsx)= ')
foutnm = input('画像保存ファイル(*.png)= ')
#
# Excelファイルの読み込み
#
data_xlsx = pd.read_excel(finnm, header = None) # Excelファイルを読み込みDataFrame型オブジェクトを生成
data = data_xlsx.values
# Dataframe型オブジェクトからnumpyの配列オブジェクトを生成
var_name = data[0,1]
values = data[1:].T[1]
plt.figure(figsize = (8, 6))
# 画像のサイズ
sb.stripplot(values)
# ストリッププロット
sb.boxplot(values, width=0.3) # 箱ひげ図
plt.yticks(fontsize=14)
# 縦軸の目盛りのフォントサイズ
plt.ylabel('気温', fontsize=20)
plt.savefig(foutnm)
# 画像の保存
print('保存画像ファイル:', foutnm)
plt.show()
# 画像の表示