- データを見やすいグラフで表示したい。
- Excelだとデータをすべて読むことができない。
- matplotlibって聞いたことあるけど、どんなことができるの?
こんな悩みを解決します!!
みなさん、matplotlibを使用していますか?
matplotlibは簡単にグラフを書くことができるライブラリです。
折れ線グラフやヒストグラム、散布図などを描画することができます。
さらに3次元のグラフを描画することも可能です。
データ分析後にわかりやすく表示するためには必須のライブラリです。
本記事では、サンプルコードを紹介しながら、matplotlibの基本的な使い方をわかりやすく解説します。
よく使用するmatplotlibのコマンドを一覧にしていますので、チートシートとして使用できます。
matplotlibの使い方を忘れたときに活用できますので、最後まで読んでいただけると嬉しいです!!
そもそも、matplotlibって何?
matplotlibのおさらいです。
matplotlibはPythonで簡単にグラフを書くことができるライブラリです。
読み方は「マットプロットリブ」です。
線、棒、円、ヒストグラム、散布図など、様々な種類のグラフを描画できます。
グラフの見た目やレイアウトを細かくカスタマイズできるため、自分の好みやプロジェクトに合わせた図表を作成することも可能です。
データ分析後に、その分析結果をわかりやすく表示するためには必須のライブラリです。
matplotlib 公式サイト(英語サイト)
ライブラリのインストール
matplotlibをインストールしていない方は下記コマンドをコマンドプロンプトで実行しましょう。
pip install matplotlib
ライブラリの使用方法
グラフ描画で使用するモジュールmatplotlib.pyplotを使用するときは下記のようにインポートしましょう。
matplotlib.pyplotは「plt」という別名でインポートします。
import matplotlib.pyplot as plt
グラフ作成の基本
グラフ作成の基本は、次の通りです。
- グラフデータx軸、y軸を準備する
- グラフを作成する
- グラフの詳細を設定する
- グラフを表示する または、グラフを画像として保存する
ソースコード例
# インポート
import matplotlib.pyplot as plt
import numpy as np
# データの準備
X = np.arange(0, 5, 0.05)
# 1つ目のグラフの値
Y1 = np.sin(X * np.pi)
# 2つ目のグラフの値
Y2 = 0.5 * np.sin(X * np.pi) + 0.5 * np.sin((X + 0.5) * np.pi * 3)
# グラフを作成
# 1つ目のグラフ 青色
plt.plot(X, Y1, color="blue", label="Y1")
# 2つ目のグラフ 赤色
plt.plot(X, Y2, color="red", label="Y2")
# Xラベルの設定
plt.xlabel("x_label")
# Yラベルの設定
plt.ylabel("y_label")
# タイトルの設定
plt.title("title")
# グリッド表示
plt.grid()
# 凡例
plt.legend()
# グラフの表示
plt.show()
結果 ※Google Colabで表示
グラフを作成する際、Numpyの配列を使用すると便利です。
Numpyの使い方はこちらの記事を参考にしてください。
⇒NumPyの使い方をわかりやすく解説!!配列を使いこなそう!サンプルコード付き!
グラフ作成を簡単に試すなら、JupyterLabやGoogleColabの使用がおすすめです。
JupyterLabやGoogleColabについては、こちらの記事で解説しています。
⇒【JupyterLabの使い方】初心者は迷ったらこれだけ読め!
⇒【Google Colabの使い方】Pythonを手軽に始められる開発環境を解説!
グラフの表示 : show()
作成したグラフを表示するには、show()を使用します。
Google Colabでは最後の処理が表示されるため、show()を使用しなくてもグラフを表示することが可能です。
# グラフの表示
plt.show()
グラフの保存 : savefig()
savefig()で、作成したグラフを保存することができます。
# グラフの保存
plt.savefig("ファイル名")
グラフの種類
折れ線グラフの作成 : plot()
plot()で、折れ線グラフを作成することができます。
引数にx値、y値を入れます。
# 折れ線グラフの作成
# データの準備
X = [5, 10, 15, 20, 25]
Y = [30, 20, 50, 60, 40]
# グラフを作成
plt.plot(X, Y1)
# 表示する
plt.show()
結果 ※Google Colabで表示
線種や色、マーカなどを引数で設定することができます。
# データの準備
X = [5, 10, 15, 20, 25]
Y1 = [30, 20, 50, 60, 40]
Y2 = [35, 25, 55, 65, 45]
Y3 = [40, 30, 60, 70, 50]
Y4 = [45, 35, 65, 75, 55]
# グラフを作成
plt.plot(X, Y1, marker="o", color="blue", linestyle="-")
plt.plot(X, Y2, marker="x", color="red", linestyle="--")
plt.plot(X, Y3, marker="v", color="green", linestyle="-.")
plt.plot(X, Y4, marker="s", color="black", linestyle=":")
# 表示する
plt.show()
結果 ※Google Colabで表示
棒グラフ(縦)の作成 : bar()
bar()で、棒グラフを作成することができます。
引数にラベルと値を入れます。
# 棒グラフの作成
# データの準備
labels = ["A", "B", "C", "D", "E"]
Y = [5, 20, 15, 12, 23]
# グラフを作成
plt.bar(labels, Y)
# 表示する
plt.show()
結果 ※Google Colabで表示
棒の色、太さなどを引数で設定することができます。
# データの準備
labels = ["A", "B", "C", "D", "E"]
Y1 = [5, 20, 15, 12, 23]
# グラフを作成
plt.bar(labels, Y, width=0.5, color="green")
# 表示する
plt.show()
結果 ※Google Colabで表示
棒グラフ(横)の作成 : barh()
barh()で、横向きの棒グラフを作成することができます。
使用方法は棒グラフ bar()と同じで、引数にラベルと値を入れます。
# 棒グラフ(横)の作成
# データの準備
labels = ["A", "B", "C", "D", "E"]
Y = [5, 20, 15, 12, 23]
# グラフを作成
plt.barh(labels, Y)
# 表示する
plt.show()
結果 ※Google Colabで表示
ヒストグラムの作成 : hist()
hist()で、ヒストグラムを作成することができます。
棒の色、太さなどを引数で設定することができます。
# ヒストグラムの作成
import numpy as np
# データの準備
# 平均5、標準偏差1 の正規乱数を1000件生成
X = np.random.normal(5, 1, 1000)
# グラフを作成
plt.hist(X)
# 表示する
plt.show()
結果 ※Google Colabで表示
散布図の作成 : scatter()
scatter()で、散布図を作成することができます。
引数にx値、y値を入れます。
棒の色、太さなどを引数で設定することができます。
# 散布図の作成
import numpy as np
# データの準備
# 平均5、標準偏差2 の正規乱数を300件生成
X = np.random.normal(5, 2, 300)
# 平均10、標準偏差1 の正規乱数を300件生成
Y = np.random.normal(10, 1, 300) + X
# グラフを作成
plt.scatter(X, Y)
# 表示する
plt.show()
結果 ※Google Colabで表示
円グラフの作成 : pie()
pie()で、円グラフを作成することができます。
引数にデータとラベルを入れます。
# 円グラフの作成
# データの準備
labels = ["A", "B", "C", "D", "E"]
data = [32, 25, 22, 15, 8]
# グラフを作成
plt.pie(data, labels=labels, counterclock=False, startangle=90)
# 表示する
plt.show()
結果 ※Google Colabで表示
引数の「counterclock=False, startangle=90」をつけないと、3時の位置から反時計回りに配置されます。
plt.pie(data, labels=labels)
結果 ※Google Colabで表示
箱ひげ図 : boxplot()
boxplot()で箱ひげ図を作成することができます。
#箱ひげ図の作成
import numpy as np
# データの準備
X = np.random.normal(0,1,(100,3))
# グラフを作成
plt.boxplot(X)
# 表示する
plt.show()
結果 ※Google Colabで表示
グラフの詳細設定
複数のグラフの表示 : add_subplot()
複数のグラフを表示する方法はいくつかありますが、ここではadd_subplot()を使用した方法を紹介します。
figure()で描画エリアを作成し、add_subplot()でグラフを追加していきます。
グラフを左右に並べるときは、次のように記入します。
# 複数のグラフの表示
# 折れ線グラフのデータ準備
X1 = [5, 10, 15, 20, 25]
Y1 = [30, 20, 50, 60, 40]
# 棒グラフのデータ準備
labels = ["A", "B", "C", "D", "E"]
Y2 = [5, 20, 15, 12, 23]
# figureを作る
fig = plt.figure()
fig.suptitle("figure title")
# 折れ線グラフを作成
# 1行 2列の配置の1番目(左)に配置
ax1 = fig.add_subplot(1, 2, 1)
ax1.plot(X1, Y1)
ax1.set_title("sub title 1")
# 棒グラフを作成
# 1行 2列の配置の2番目(右)に配置
ax2 = fig.add_subplot(1, 2, 2)
ax2.bar(labels, Y2)
ax2.set_title("sub title 2")
# 表示する
plt.show()
結果 ※Google Colabで表示
グラフを上下に並べるときは、次のように記入します。
# 折れ線グラフのデータ準備
X1 = [5, 10, 15, 20, 25]
Y1 = [30, 20, 50, 60, 40]
# 棒グラフのデータ準備
labels = ["A", "B", "C", "D", "E"]
Y2 = [5, 20, 15, 12, 23]
# figureを作る
fig = plt.figure()
fig.suptitle("figure title")
# 折れ線グラフを作成
# 2行 1列の配置の1番目(上)に配置
ax1 = fig.add_subplot(2, 1, 1)
ax1.plot(X1, Y1)
ax1.set_title("sub title 1")
# 棒グラフを作成
# 2行 1列の配置の2番目(下)に配置
ax2 = fig.add_subplot(2, 1, 2)
ax2.bar(labels, Y2)
ax2.set_title("sub title 2")
# 上下のグラフの間隔をあける
fig.subplots_adjust(top=0.8, hspace=0.8)
# 表示する
plt.show()
結果 ※Google Colabで表示
figure()で描画エリアを作成し、axを設定する場合、
タイトルなどグラフの詳細設定をするには ax.set_*** という書き方をします。
2つのグラフを重ねる : twinx()
twinx()で、二つのグラフを重ねることができます。
figure()で描画エリアを作成し、twinx()でグラフを追加します。
twinx()では、Y軸の目盛を左右分けることができます。
twinx()を使用せずに、グラフを重ねることはできますが、その場合は目盛が共通になります。
# 2つのグラフを重ねる
# 棒グラフのデータ準備
X1 = [1, 2, 3, 4, 5]
Y1 = [30, 20, 50, 60, 40]
labels = ["A", "B", "C", "D", "E"]
# 折れ線グラフのデータ準備
X2 = [1, 2, 3, 4, 5]
Y2 = [5, 20, 15, 12, 23]
# figureを作る
fig = plt.figure()
# 棒グラフを作成
ax1 = fig.add_subplot(1, 1, 1)
ax1.bar(X1, Y1, tick_label = labels)
# 折れ線グラフを作成
ax2 = ax1.twinx()
ax2.plot(X2, Y2, marker="x", color="red", linestyle="--")
# 表示する
plt.show()
結果 ※Google Colabで表示
グラフタイトルの設定 : title()
title()で、グラフのタイトルをつけることができます。
# グラフタイトルの設定
plt.title("title")
x軸、y軸のラベルの設定 : xlabel()、ylabel()
xlabel()、ylabel()で、x軸とy軸のラベルを付けることができます。
# x軸、y軸のラベルの設定
# Xラベルの設定
plt.xlabel("x_label")
# Yラベルの設定
plt.ylabel("y_label")
凡例の表示 : legend()
legend()で、凡例を表示することができます。
グラフを作成した際に、引数にlabelを設定していると、そのlabelを表示することができます。
グラフ作成時にlabelを設定していない場合や、別のラベル名をつけたい場合には、引数にラベル名を入れたリストを入力します。
凡例の位置を指定したい場合は、locで指定します。
# 凡例を付ける
plt.legend(["label"])
# 凡例を左上に配置
plt.legend(loc="upper left")
# 凡例を中心上に配置
plt.legend(loc="upper center")
# 凡例を右上に配置
plt.legend(loc="upper right")
# 凡例を左中に配置
plt.legend(loc="center left")
# 凡例を中心に配置
plt.legend(loc="center left")
# 凡例を右下を配置
plt.legend(loc="lower right")
グリッド線の追加 : grid()
grid()で、グリッドを設定することができます。
引数で、グリッド線の色や線種、線幅を指定することができます。
# グリッド表示
plt.grid()
# グリッドの色、線種、太さを設定
plt.grid(color='blue', linestyle='--', linewidth=0.5)
X軸、Y軸の範囲設定 : xlim()、ylim()
xlim()、ylim()でX軸とY軸の表示範囲を指定することができます。
引数に、表示する最小値と最大値を入力します。
# X軸、Y軸の範囲設定
# データの準備
X = [5, 10, 15, 20, 25]
Y = [30, 20, 50, 60, 40]
# グラフを作成
plt.plot(X, Y)
plt.xlim(0, 50)
plt.ylim(0, 100)
# 表示する
plt.show()
結果 ※Google Colabで表示
matplotlibの応用「帯グラフの作成」
matplotlibで帯グラフを作成することもできます。
帯グラフはヒストグラムや折れ線グラフのように関数が用意されているわけではないので、ひと工夫必要です。
棒グラフのbarh()を積み上げる方法で作成します。
サンプルコードは次の通りです。
import matplotlib.pyplot as plt
# データの用意
categories = ['Category 1', 'Category 2', 'Category 3']
segment_1 = [20, 30, 40]
segment_2 = [30, 20, 30]
segment_3 = [50, 50, 30]
# 積み上げ帯グラフの作成
fig, ax = plt.subplots(figsize=(10, 5))
# 各セグメントのデータを積み上げてプロット
p1 = ax.barh(categories, segment_1, color='#FFA500', label='Segment 1')
p2 = ax.barh(categories, segment_2, left=segment_1, color='#4CAF50', label='Segment 2')
p3 = ax.barh(categories, segment_3, left=[i+j for i,j in zip(segment_1, segment_2)], color='#00BFFF', label='Segment 3')
# グラフの装飾
ax.set_xlabel('Value')
ax.set_title('Stacked Bar Chart')
ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.15), ncol=3)
ax.set_xlim(0, 100) # x軸の範囲を設定
# 値のラベルを追加
for bars in [p1, p2, p3]:
for bar in bars:
width = bar.get_width()
label_y = bar.get_y() + bar.get_height() / 2
ax.text(bar.get_x() + width / 2, label_y, f'{width}', ha='center', va='center', color='white', fontsize=9)
# グラフの表示
plt.tight_layout(rect=[0, 0, 1, 0.9]) # タイトルと凡例の位置を調整
plt.show()
結果 ※Google Colabで表示
まとめ
本記事では、matplotlibの使い方をわかりやすく解説しました。
NumPyやpandasと合わせてmatplotlibを使うことで、データ解析や可視化の作業を効率的に行うことができます。
本記事で紹介したサンプルコードをコピペすれば、簡単にコードに使用することができますので、ぜひご利用ください!
Q&A
matplotlibとは何?
matplotlibは、Pythonでデータを視覚化するためのライブラリです。グラフやチャートを作成してデータを分析しやすくするために使われます。
matplotlibのインストール方法は?
pipを使ってインストールできます。
pip install matplotlib
Google Colabでは、標準でインストールされています。
作成できるグラフは?
折れ線グラフ : plot()
棒グラフ(縦) : bar()
棒グラフ(横) : barh()
ヒストグラム : hist()
散布図 : scatter()
円グラフ : pie() など
Pythonを効率的に学習するために
Pythonの学習方法は、書籍やyoutube、スクールなどがありますが、一番のおすすめはオンラインスクールでの学習です。
オンラインスクールを勧める理由は以下の通り。
- 学習カリキュラムが整っているので、体系的に学ぶことができる。
- 時間や場所を選ばずに、自分のペースで学習できる。
- 学習で詰まったときに、気軽に質問できる環境がある。
オンラインスクールについてはコチラの記事で紹介しています。
⇒ これで決まり!Pythonオンラインスクール おすすめ3社を厳選!
2024年10月1日から給付制度が拡充され、最大80%給付されるスクールもあります。
Python学習を効率的に進めるために、スクールの検討をしてみてください。
おすすめオンラインスクール
コスト重視:デイトラ
AIスキル重視:Aidemy PREMIUM
転職重視:キカガク
最後まで読んでいただきありがとうございます!
ご意見、ご感想があれば、コメントを頂けるとうれしいです!!