■ はじめに
https://dk521123.hatenablog.com/entry/2020/03/08/113356
を書く際に、ちょこちょこでてきた Matplotlib について 取り上げる
目次
【1】Matplotlib 【2】グラフの種類 【3】動画 【4】環境設定 【5】サンプル 例1:Hello world - シグモイド関数 例2:折れ線 - plot() 例3:ヒストグラム - hist() 例4:棒グラフ - bar() 例5:散布図 - scatter() 例6:円グラフ - pie()
【1】Matplotlib
* グラフ描画ライブラリ * 読み方は、Matplotlib「マット・プロット・リブ」
【2】グラフの種類
1)折れ線 2)ヒストグラム 3)棒グラフ 4)散布図 5)円グラフ 6)箱ひげ図 7)ヒートマップ etc...
【3】動画
* 以下の動画で学べる
https://www.youtube.com/watch?v=69Rd7GjgiMs
コード
https://github.com/TatsuhiroAbe/libraries_tutorial/blob/master/04/04_matplotlib_tutorial.ipynb
【4】環境設定
以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2018/02/17/102927
【5】サンプル
例1:Hello world - シグモイド関数
import numpy as np import matplotlib.pyplot as plt # シグモイド関数 def sigmoid_function(x, a=1): return 1.0 / (1.0 + np.exp(-a*x)) # 第一引数:最初の値, 第二引数:最後の値 x = np.linspace(-10.0, 10.0) # プロット(折れ線グラフ) plt.plot(x, sigmoid_function(x), label="a=1") plt.plot(x, sigmoid_function(x, 4), linestyle=":", label="a=4") plt.plot(x, sigmoid_function(x, 0.5), linestyle="--", label="a=0.5") # 表示 plt.show()
例2:折れ線 - plot()
* 詳細は、以下の関連記事を参照のこと
Matplotlib ~ 基本編 / 折れ線 ~
https://dk521123.hatenablog.com/entry/2023/09/17/003431
import numpy as np import matplotlib.pyplot as plt # Step1:データ用意 # numpy.linspace() # 第一引数:最初の値, 第二引数:最後の値, 第三引数:要素数 x = np.linspace(0, 1, 5) # numpy.random.randn() # 標準正規分布を5個生成 y = x + 0.2 * np.random.randn(5) # Step2:プロット(折れ線グラフ) plt.plot(x, y, label="Hello world") # Step3:グラフ表示 # 凡例 plt.legend() # 表示 plt.show()
複数グラフを同一領域に表示するには... (一部抜粋)
# 標準正規分布を5個生成 y1 = x + 0.2 * np.random.randn(5) y2 = x + 0.3 * np.random.randn(5) # Step2:プロット(折れ線グラフ) plt.plot(x, y1, color='red', linewidth=2.0, linestyle='solid') plt.plot(x, y2, color='blue', linewidth=2.0, linestyle='dashed') # 凡例 plt.legend(['Hello - 1', 'Hello - 2'])
例3:ヒストグラム - hist()
以下のサイトのサンプルで勉強。
https://www.youtube.com/watch?v=N9fDIAflCMY
import numpy as np import matplotlib.pyplot as plt data_number = 500 grey_height = 28 + 4 * np.random.randn(data_number) lab_height = 24 + 4 * np.random.randn(data_number) plt.hist([grey_height, lab_height], stacked=True, color=['r', 'b']) plt.show()
例4:棒グラフ - bar()
* 棒グラフのより詳細情報は、以下の関連記事を参照のこと
Matplotlib ~ 基本編 / 棒グラフ ~
https://dk521123.hatenablog.com/entry/2023/09/16/151516
「Kaggle(カグル)」の 「Titanic: Machine Learning from Disaster」を使用する
https://dk521123.hatenablog.com/entry/2020/04/04/021413
Pythonコード
import numpy as np import pandas as pd import matplotlib.pyplot as plt train_df = pd.read_csv('train.csv', encoding='UTF-8') # グラフインスタンスを生成(グラフの大きさを指定) figure = plt.figure(figsize=(12, 4)) # 1行2列のグラフのうち1番目に、グラフ描画領域を指定 axis1 = figure.add_subplot(121) pclassplot = train_df['Survived'].groupby(train_df['Pclass']).mean() # 棒グラフ axis1.bar(x=pclassplot.index, height=pclassplot.values) # X軸のラベル表示 axis1.set_xlabel('Pclass', fontsize=15) # Y軸のラベル表示 axis1.set_ylabel('Survival rate', fontsize=15) axis1.set_xticks(pclassplot.index) axis1.set_yticks(np.arange(0, 1.1, 0.1)) # グラフのタイトル表示 axis1.set_title('Pclass and Survival rate') # 1行2列のグラフのうち2番目に、グラフ描画領域を指定 axis2 = figure.add_subplot(122) sexplot = train_df['Survived'].groupby(train_df['Sex']).mean() axis2.bar(x=sexplot.index, height=sexplot.values) axis2.set_xlabel('Sex', fontsize=15) axis2.set_ylabel('Survival rate', fontsize=15) axis2.set_xticks(sexplot.index) axis2.set_yticks(np.arange(0, 1.1, 0.1)) axis2.set_title('Sex and Survival rate') plt.show()
例5:散布図 - scatter()
https://pythondatascience.plavox.info/matplotlib/%E6%95%A3%E5%B8%83%E5%9B%B3
import numpy as np import matplotlib.pyplot as plt # Step1:データ用意 # 乱数を 100 件生成 x = np.random.rand(100) y = np.random.rand(100) # Step2:散布図を表示 plt.scatter( x, y, s=100, c="red", cmap='Blues', marker="x") # Step3:グラフ表示 # カラーバーを表示 plt.colorbar() plt.show()
例6:円グラフ - pie()
https://pythondatascience.plavox.info/matplotlib/%E5%86%86%E3%82%B0%E3%83%A9%E3%83%95
import numpy as np import matplotlib.pyplot as plt # Step1:データ用意 dataset = np.array([10, 20, 30, 40]) dataset_labels = ["Mike", "Tom", "Sam", "Kevin"] # Step2:円グラフ plt.figure(figsize=(10, 10)) plt.pie(dataset, labels=dataset_labels, autopct='%.1f%%', textprops={'fontsize': 9}, wedgeprops={'linewidth': 2, 'edgecolor': "white"}) # Step3:グラフ表示 plt.show()
関連記事
Matplotlib ~ 基本編 / 折れ線 ~
https://dk521123.hatenablog.com/entry/2023/09/17/003431
Matplotlib ~ 基本編 / 棒グラフ ~
https://dk521123.hatenablog.com/entry/2023/09/16/151516
Matplotlib ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2023/09/14/230848
TensorFlow ~ 環境構築 / Windows 編 ~
https://dk521123.hatenablog.com/entry/2018/02/17/102927
scikit-learn ~ 機械学習用ライブラリ・基本編 ~
https://dk521123.hatenablog.com/entry/2020/03/08/113356
NumPy ~ 数値計算ライブラリ ~
https://dk521123.hatenablog.com/entry/2018/03/28/224532
Pandas ~ データ解析支援ライブラリ ~
https://dk521123.hatenablog.com/entry/2019/10/22/014957