Matplotlib(応用編)#

Open In Colab

実際のデータから、プロットをしてみよう!

オブジェクト指向インターフェースを軽く使ってみます。

import matplotlib.pyplot as plt
import pandas as pd
# 日本語対応
from matplotlib import rcParams
rcParams['font.family'] = 'sans-serif'
rcParams['font.sans-serif'] = ['Hiragino Maru Gothic Pro', 'Yu Gothic', 'Meirio', 'Takao', 'IPAexGothic', 'IPAPGothic', 'VL PGothic', 'Noto Sans CJK JP']

データの読み込み#

# colabでは不要
!mkdir -p sample_data
!curl -o "sample_data/california_housing_train.csv" -sL https://download.mlcc.google.com/mledu-datasets/california_housing_train.csv
df = pd.read_csv('sample_data/california_housing_train.csv')

print(df.head(5))
   longitude  latitude  housing_median_age  total_rooms  total_bedrooms  \
0    -114.31     34.19                15.0       5612.0          1283.0   
1    -114.47     34.40                19.0       7650.0          1901.0   
2    -114.56     33.69                17.0        720.0           174.0   
3    -114.57     33.64                14.0       1501.0           337.0   
4    -114.57     33.57                20.0       1454.0           326.0   

   population  households  median_income  median_house_value  
0      1015.0       472.0         1.4936             66900.0  
1      1129.0       463.0         1.8200             80100.0  
2       333.0       117.0         1.6509             85700.0  
3       515.0       226.0         3.1917             73400.0  
4       624.0       262.0         1.9250             65500.0  

図の作成#

fig = plt.figure(figsize=(16, 8))

ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)
_images/matplotlib_advanced_7_0.png

複数プロット

fig = plt.figure()

↑新しい図(figureオブジェクト)を作成する。

ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)

↑figを1行2列に分けて、ax1その1つ目(左側)に、ax2を2つ目(右側)に割り当てる。

散布図のプロット#

左側の図(ax1)に散布図をプロットしてみます。

データ

  • 横軸:所得の中央値

  • 縦軸:家賃の中央値

ax1.scatter(df['median_income'], df['median_house_value'], c="tab:blue")

ax1.set_title("Income and HouseValue")  # 散布図のタイトル
ax1.set_xlabel("median income")         # x軸のラベル
ax1.set_ylabel("median house value")    # y軸のラベル

fig
_images/matplotlib_advanced_10_0.png

箱ひげ図のプロット#

右側の図(ax2)に箱ひげ図をプロットしてみます。

データ

  • 家賃の中央値

ax2.boxplot(df['median_house_value'], labels=["median house value"])

ax2.set_title("House Value")

fig
_images/matplotlib_advanced_12_0.png

タイトルの設定#

最後にタイトルをつけてみましょう。

fig.suptitle("所得と家賃の関係", fontsize=20)  # figの上にタイトルを設定

fig
_images/matplotlib_advanced_14_0.png

割といい感じの図ができたんじゃないでしょうか??

参考#