箱ひげ図を表示するPythonコード
データから箱ひげ図をPythonで出力してみよう。
Pythonコード
matplotlib.pyplot
のboxplot()
関数を利用して, 箱ひげ図を出力する。
boxplot()
の引数には, 箱ひげ図にするデータを入力する。
labels
で各箱ひげのラベルを付けることが可能。vert=False
を指定すると, 横方向の箱ひげ図を作成可能。(縦方向の場合は入力不要。)showmeans=True
を指定すると, 平均値を表示可能。meanprops
で平均値の表示形式を指定可能。不要である場合は入力不要。
入力例. class_A
class_B
class_C
のデータから箱ひげ図を表示する。
import matplotlib.pyplot as plt
import japanize_matplotlib
# データ
class_A = [78, 82, 85, 90, 87, 92, 88, 84, 79, 81, 86, 91, 83, 85, 89, 87, 90, 88, 84, 82, 86, 88, 90, 92, 85, 87, 89, 91, 83, 84]
class_B = [65, 68, 70, 72, 74, 71, 69, 66, 75, 73, 72, 70, 68, 71, 69, 74, 73, 75, 72, 68, 70, 71, 69, 67, 74, 72, 73, 75, 68, 70]
class_C = [55, 60, 65, 50, 70, 75, 40, 85, 60, 55, 50, 80, 75, 45, 65, 70, 55, 60, 85, 40, 75, 70, 50, 55, 60, 65, 45, 80, 75, 50]
# 箱ひげ図
plt.boxplot(
[class_A, class_B, class_C], labels=["クラスA", "クラスB", "クラスC"],
vert=False,
showmeans=True, # 平均値を表示
meanprops={"marker":"x", "markerfacecolor":"black", "markeredgecolor":"black", "markersize":8}
)
plt.title("数学テスト点数の分布")
plt.xlabel("点数") # plt.ylabel("点数")
plt.grid(True)
plt.show()

縦向きの場合は, vert
をTrue
にするか消去する。この場合, xlabel
とy.lable
が替わるので変更する。
import matplotlib.pyplot as plt
import japanize_matplotlib
# データ
class_A = [78, 82, 85, 90, 87, 92, 88, 84, 79, 81, 86, 91, 83, 85, 89, 87, 90, 88, 84, 82, 86, 88, 90, 92, 85, 87, 89, 91, 83, 84]
class_B = [65, 68, 70, 72, 74, 71, 69, 66, 75, 73, 72, 70, 68, 71, 69, 74, 73, 75, 72, 68, 70, 71, 69, 67, 74, 72, 73, 75, 68, 70]
class_C = [55, 60, 65, 50, 70, 75, 40, 85, 60, 55, 50, 80, 75, 45, 65, 70, 55, 60, 85, 40, 75, 70, 50, 55, 60, 65, 45, 80, 75, 50]
# 箱ひげ図
plt.boxplot(
[class_A, class_B, class_C], labels=["クラスA", "クラスB", "クラスC"],
showmeans=True, # 平均値を表示
meanprops={"marker":"x", "markerfacecolor":"black", "markeredgecolor":"black", "markersize":8}
)
plt.title("数学テスト点数の分布")
plt.ylabel("点数")
plt.grid(True)
plt.show()

※matplotlib
で日本語を利用する場合japanize_matplotlib
を使う。必要であれば、次を行い事前にインストールしておく。
pip install japanize-matplotlib