質問: Matplotlibで箱ひげ図の描画を行なっています。 その中で ``` plt.boxplot(np.random.randn(20).reshape(-1,2)) ``` という部分があってreshape(-1,2)の部分が箱ひげ図のどこに関わっているのかがわかりません。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/9337bb28ea4e50fe1eb52884a950afb3.png) コード実行の結果は画像のようなのですが、この画像のどの部分がreshape(-1,2)に対応しているのでしょうか? コード全体は以下のようです。 ``` # coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function import os import numpy as np import numpy.random as random import matplotlib.pyplot as plt plt.boxplot(np.random.randn(20).reshape(-1,2)) plt.show() ```
回答: 質問内容(あなたが疑問に思っていること)が完全には把握できていませんので回答ではありません。 アドバイスです。 * "plt.boxplot(np.**random.randn(20)**.reshape(-1,2))"を"plt.boxplot(np.**arange(4)**.reshape(-1,2))"とすると、何かピンとくるかもしれません。 * `reshape`については配列の次元数や大きさの操作をよく読むと、何か分かるかもしれません。 #### お願い * 回答ではありませんので、**ベストアンサーにはしないでください。** * 自力で解決できた場合は**自己回答**することを強くお勧めします。 ##### 1,2,3,4]の描画結果 ``` import numpy as np import matplotlib.pyplot as plt a = np.array([1,2,3,4]) plt.boxplot(a) plt.show() ``` ![箱ひげ図 #### `boxplot`での箱ひげ図について 一般的な「箱ひげ図」は以下の値を採用するようです。 * 最小、最大、中央、第一四分位(箱の下辺)、第三四分位(箱の上辺)に位置する値を採用する。 * 上記は、数値の組の先頭からそれぞれ0,1,0.5,0.25,0.75番目の率の位置にするものとする。 * 位置(番目)が小数の場合は、その前後に位置する2値に応じた重み付き平均値を採用する(別の考えもあり)。 参考:四分位数の求め方といろいろな例題 ``` # 数値の組[1,2,3,4] の場合。数値の個数 n=4 最小値=(n-1)*0 番目の値= 0 番目の値=1 最大値=(n-1)*1 番目の値= 3 番目の値=4 中央値=(n-1)*0.5 番目の値= 1.5 番目の値=1番目の値*0.5 +2番目の値*0.5 =2*0.5 +3*0.5 =2.5 下辺値=(n-1)*0.25番目の値= 0.75番目の値=0番目の値*0.25+1番目の値*0.75=1*0.25+2*0.75=1.75 上辺値=(n-1)*0.75番目の値= 2.25番目の値=2番目の値*0.75+3番目の値*0.25=3*0.75+4*0.25=3.25 ``` この結果は`boxplot`の描画結果と一致します。 上記の考察とあなたのコメントより`boxplot`関数で描画される結果は、あなたの考える**箱ひげ図**ではないと考えます。