python PR

【matplotlib入門⑥】箱ひげ図を簡単にプロットする方法

記事内に商品プロモーションを含む場合があります

今回の講座ではmatplotlibで箱ひげ図を描画する方法を紹介します。
とくに

  • matplotlibでどうやって描画するの?
  • 外れ値の範囲は変更できる?

このような疑問を持っている人にうってつけの内容になっています。
箱ひげ図は、散布図や棒グラフなどと比べると使用機会は少ないと思いますが、データの分布を把握するのに役立ちます。
引数の指定も多く、細かい設定が出来るようになっていますが、全て覚える必要はないです。
この講座では重要な部分に絞って解説します。

 

箱ひげ図とは何か?

箱ひげ図とは、↑のような図のことです。
データの分布を箱とひげで表しています。

つまり、データの分布がどのように散らばっているのか?その点を理解しやすくしてくれるのが箱ひげ図です。

箱は、第1四分位数、第2四分位数(中央値)、第3四分位数を表しています。
ひげの下端が最小値を表しており、ひげの上端が外れ値を除いた最大値を表しています。

今回は簡単に箱ひげ図の説明をしましたが、もっと詳しく知りたいという方は下記の記事を参照してください。

箱ひげ図の見方と四分位数【0から始める統計検定2級講座③】この講座の対象者は以下の方を想定しています。 数学は中学レベルしか分からないけど統計検定2級に合格したい どの参考書...

 

plt.boxplot()の引数

matplotlibで箱ひげ図をプロットするにはplt.boxplot()を使います。
引数に指定できるものは非常に多いですが、全てを使うこともないと思いますので、主要なもに絞って解説します。

 

boxplot()の引数

boxplot(x, sym=None, vert=None, whis=None, meanline=None, showmeans=None, medianprops=None, meanprops=None, data=None)

引数 説明 詳細
X x軸を指定
  • x軸にplotするデータを指定
sym 外れ値のオプション
  • 空文字を渡すと外れ値を非表示
  • 外れ値の色と形を変更する
vert 箱ひげ図を水平方向に表示
  • vert = 0 or Falseで水平方向に表示させる
whis 外れ値の範囲を指定
  • 数値で指定
  • デフォルトは1.5
showmeans 平均値を記号で表示
  • Trueで表示する
meanline 平均値を線で表示
  • showmeansとセットで使う
  • 平均値を記号ではなく線で表示
medianprops 中央値の色やスタイルを変更
  • 辞書で渡してあげることで変更できる
meanprops 平均値の色やスタイルを変更
  • 辞書で渡してあげることで変更できる

主要な引数としてはここら辺ですね!
では実際に使い方を見ていきましょう。

 

plt.boxplot()で箱ひげ図をプロットしよう

まずはシンプルな箱ひげ図をプロットしてみましょう。
適当なデータを作成し、タイトルをつけてプロットします。

サクッと作成することができましたね。
y軸で16にある〇は外れ地を表しています。また箱ひげ図のオレンジの線は中央値を示しています。(平均値ではありません。)

 

外れ値のオプション(sym/whis)

続いて外れ値の表示方法を変更してみましょう!
引数のsymとwhisで設定することができます。
まずは外れ値の色とスタイルを変更してみましょう!

赤色のダイヤモンド形にしてみますのでsymを指定します。

sym=’rD’と色・形の順で指定することで変更することができます。

また、外れ値を表示したくない時にはsym=”(空文字)で指定する事で消すことができます。

 

外れ値の範囲指定(whis)

続いて何かと使う場面のある、外れ値の範囲指定です。
whis引数に数字を指定する事で変更することがでます。
ちなみにデフォルトは1.5です。

数値指定を0.9にしてみましょう。

外れ値の範囲を変更することができました。

 

箱ひげ図を水平に表示(vert)

そんなに使う機会は多くはありませんが、箱ひげ図の表示を水平方向にすることもできます。
vert=0 or Falseとすることで可能です。

 

平均値を表示する

boxplot()は基本的には中央値が表示されます。
しかし、平均値を表示したいって時もありますよね?
そんな時はshowmeansやmeanlineを使うことで表示できます。

showmeansで平均値を記号で表示

平均値を記号でplotすることができました。
平均値と中央値の差が大きい時などに表示したいですね。

では続いて平均値を記号ではなく線で表示してみましょう。
個人的にはこちらの方が使う機会が多いです。

meanlineで平均値を線で表示

この時注意点としては、showmeanに加えてmeanlen=Trueとすることです。
meanlineだけ指定しても平均値は表示されません。

 

中央値の線をカスタマイズ(medianprops)

中央値の線をカスタマイズしたい時はmedianpropsを使います。
今までとは違い辞書で渡してあげます。

指定方法としては、

  • color:色
  • linewidth:線の太さ
  • linestyle:線のスタイル

このようにして指定します。

もちろん全てを指定する必要はなく、色を変えたいだけならcolorだけ指定すれば大丈夫です。
また、linestyleで変更できる線のスタイルは以下の通りです。

  • '-':実線
  • '--':破線
  • '-.':点線
  • ':':ダッシュ線
  • 'None':線なし
  • 'solid':実線
  • 'dashed':破線
  • 'dotted':点線
  • 'dashdot':ダッシュ線

中央値を消して平均値だけを表示したい時はNoneで指定してあげましょう。

 

 

平均値の線をカスタマイズ(meanprops)

平均値の線をカスタマイズする時はmeanpropsを使います。
コチラもmedianpropsと同じく辞書で渡してあげます。
指定方法も一緒です。

注意点としては、showmeansとmeanlineをTrueにしないといけません。

 

 

boxplot()まとめ

いかがでしたでしょうか?
boxplot()の使い方が分かったでしょうか?

本当はもっと細かいカスタマイズをすることも出来るのですが、今回の内容だけでも実際の現場では十分だと思います。

どんどん手を動かして身につけましょう~!

あなたにおススメの記事