散布図の作成

目的

機械学習やビッグデータの解析では,大量にある多次元データを様々な側面から見る必要がある.ここでは,matplotlibを用いた散布図の作成方法を学ぶ.

説明

散布図の描画

まずは簡単な散布図を描画してみよう.

6行目から9行目で,320名の学生の英語のテストの点数からなる配列と数学のテストの点数からなる配列を作っている.ここでは,英語の点数が高い学生は数学の点数も高いという傾向はないものとしている.13行目のように,axオブジェクトのscatterメソッドを,横軸のデータと縦軸のデータを引数で指定して呼び出すと,散布図を作成できる.

複数のデータからなる散布図

次に,ある学校の学生の英語のテストの点数と数学のテストの点数を表す散布図と,別のある学校の散布図を描き,分布を比較してみよう.

7行目から9行目で,ある学校の学生320名の英語と数学のテストの点数の配列を作成し,16行目でその散布図を描画している.10行目から12行目で,別のある学校の学生280名の英語と数学のテストの点数の配列を作成し,17行目でその散布図を描画している.

凡例・軸ラベル・タイトル・グリッド線の指定

凡例・軸ラベル・タイトル・グリッド線の指定の仕方はこれまでと同様である.

マーカの大きさの指定

散布図のマーカの大きさを指定するには,scatterメソッドのキーワード引数sに大きさを表す数値を指定すればよい.デフォルト値は20であるため,以下のように10を指定すると,マーカの大きさを小さくすることができる.

マーカの色の指定

散布図のマーカの色を指定するには,scatterメソッドのキーワード引数cを使用すればよい.

マーカの形状の指定

散布図のマーカの形状を指定するには,scatterメソッドのキーワード引数markerを使用すればよい.デフォルトでは円を表す’o’であり,以下のように,’.’を指定するとマーカの形状が点に,’x’を指定するとバツになる.

描画する範囲の指定

100点満点のテストだとすると,散布図の横軸と縦軸の範囲を0点から100点としたいことがある.各軸の範囲を指定するには,axオブジェクトのset_xlim, set_ylimメソッドを使用すればよい.

図のアスペクト比の指定

図のアスペクト比(横に対する縦の比率)はデフォルトで3/4であるため横長な図となる.今回の例では縦軸と横軸はテストの点数であるが,横長な図であるため,スケールが揃っていない.アスペクト比を変更するには,以下のようにすればよい.

14行目のように,pyplotモジュールのfigaspect関数をアスペクト比を引数で指定して呼び出すと,高さはデフォルト値のまま,横幅を指定したアスペクト比に合うように調整した図の大きさを取得できる.その図の大きさを,figureオブジェクトのコンストラクタのキーワード引数figsizeに指定すると,アスペクト比が1の図を作成することができる.

3次元散布図

英語と数学のテストの点数に加えて,国語の点数も含めた3次元の散布図を描いてみよう.

11,15行目で国語のテストの点数の配列を作成している.3行目で,3次元散布図を描画するのに必要なモジュールAxes3Dをインポートしている.18行目のようにfigureオブジェクトのadd_subplotメソッドを,キーワード引数projectionに’3d’と指定して呼び出すと,3次元のグラフを描画できる領域を追加できる.19,20行目のように,scatterメソッドの引数として,英語・数学の点数に加えて,国語の点数を指定することで,3次元の散布図を描くことができる.

実行すると,以下のように表示され,マウスドラッグによって視点を変更することができる.

この例では,奥にあるマーカほど色が薄く表示されていることがわかる.奥にあるマーカの色を薄くしたくない場合には,scatterメソッドのキーワード引数depthshadeにFalseを指定すればよい.

課題

課題0

320名の学生の英語のテストの点数からなる配列と数学の点数からなる配列を作成し,英語の点数と数学の点数を散布図として表せ.

課題1

100人の身長からなる配列と体重からなる配列を作成し,身長と体重を散布図として表せ.(通常は身長と体重には相関があるが,今回は独立であるとしてよい)

課題2

ある学校の320名の学生の英語のテストの点数からなる配列と数学の点数からなる配列を作成し,英語の点数と数学の点数を散布図として表せ.また,別の学校の280名の学生の点数の配列を作成し,同じ散布図上に描画し,比較せよ.

課題3

100人の小学生の身長からなる配列と体重からなる配列を作成し,身長と体重を散布図として表せ.また,120人の中学生の身長と体重の配列を作成し,同じ散布図上に描画し,比較せよ.(通常は身長と体重には相関があるが,今回は独立であるとしてよい)

課題4

100人の小学生の身長からなる配列と体重からなる配列を作成し,身長と体重を散布図として表せ.また,120人の中学生の身長と体重の配列と,80人の高校生の身長と体重の配列を作成し,同じ散布図上に描画し,比較せよ.(通常は身長と体重には相関があるが,今回は独立であるとしてよい)

課題5

ある学校の320名の学生の英語のテストの点数からなる配列と数学の点数からなる配列と国語の点数からなる配列を作成し,英語の点数と数学の点数と国語の点数を3次元の散布図として表せ.

課題6

100人の身長からなる配列と体重からなる配列と握力からなる配列を作成し,身長と体重と握力を3次元の散布図として表せ.(通常は身長と体重と握力には相関があるが,今回は独立であるとしてよい)

課題7

ある学校の320名の学生の英語のテストの点数からなる配列と数学の点数からなる配列と国語の点数からなる配列を作成し,英語の点数と数学の点数と国語の点数を3次元の散布図として表せ.また,別の学校の280名の学生の点数の配列を作成し,同じ散布図上に描画し,比較せよ.

課題8

100人の小学生の身長からなる配列と体重からなる配列と握力からなる配列を作成し,身長と体重と握力を3次元の散布図として表せ.また,120人の中学生の身長と体重と握力の配列を作成し,同じ散布図上に描画し,比較せよ.

課題9

100人の小学生の身長からなる配列と体重からなる配列と握力からなる配列を作成し,身長と体重と握力を3次元の散布図として表せ.また,120人の中学生の身長と体重と握力の配列と,80人の高校生の身長と体重と握力の配列を作成し,同じ散布図上に描画し,比較せよ.