データをグラフにして分かりやすく表現しよう!
はじめに:Matplotlibって何?🤔
Matplotlib(マットプロットリブ)は、Pythonで最も広く使われているデータ可視化ライブラリの一つです。数値データをグラフや図にして表示することができます。
データ分析の結果や機械学習のモデル評価など、数字だけでは分かりにくい情報を視覚的に表現することで、傾向やパターンを直感的に理解できるようになります。論文品質のグラフを作成することも可能で、研究分野でも広く利用されています。
このステップでは、Matplotlibの基本的な使い方を学び、様々な種類のグラフを作成する方法を見ていきましょう!
Matplotlibのインストール⚙️
Matplotlibは外部ライブラリなので、使用する前にインストールが必要です。Pythonのパッケージ管理ツールであるpipを使って簡単にインストールできます。
ターミナル(Windowsの場合はコマンドプロンプト)を開き、以下のコマンドを実行してください。
pip install matplotlib
Jupyter NotebookやGoogle Colaboratoryを使っている場合は、セルの先頭に!
をつけて実行します。
!pip install matplotlib
“Successfully installed matplotlib-…”のようなメッセージが表示されればインストール完了です!
基本的なグラフの作成手順📈
Matplotlibでグラフを作成する基本的な流れは以下のようになります。
matplotlib.pyplot
モジュールをインポートする(慣例としてplt
という別名をつけます)。- グラフにするためのデータ(リストやNumPy配列など)を準備する。
plt.plot()
などの関数を使ってグラフを作成する。plt.title()
やplt.xlabel()
などでグラフのタイトルやラベルを設定する(オプション)。plt.show()
関数でグラフを表示する。
まずは簡単な折れ線グラフを作成してみましょう。
import matplotlib.pyplot as plt
import numpy as np # NumPyもよく一緒に使われます
# 1. pyplotをインポート (pltとして)
# 2. データの準備 (例としてサインカーブ)
x = np.linspace(0, 2 * np.pi, 100) # 0から2πまで100個の等間隔な点を生成
y = np.sin(x)
# 3. グラフの作成
plt.plot(x, y)
# 4. タイトルとラベルの設定 (オプション)
plt.title("Sine Curve Example")
plt.xlabel("X-axis (radians)")
plt.ylabel("Y-axis (sin(x))")
plt.grid(True) # グリッド線を表示 (オプション)
# 5. グラフの表示
plt.show()
%matplotlib inline
というマジックコマンドをコードの最初の方で実行しておくと、plt.show()
なしでもグラフが表示されるようになります。ただし、明示的にplt.show()
を呼ぶのが一般的な習慣です。よく使われるグラフの種類📊
Matplotlibでは様々な種類のグラフを描画できます。ここでは代表的なものをいくつか紹介します。
グラフの種類 | 主な用途 | 作成関数 (pyplot) |
---|---|---|
折れ線グラフ | 時間経過に伴うデータの変化、傾向の表示 | plt.plot() |
棒グラフ | カテゴリ間の量の比較 | plt.bar() (縦棒), plt.barh() (横棒) |
散布図 | 2つの量的変数の関係性、分布の表示 | plt.scatter() |
ヒストグラム | 量的データの度数分布の表示 | plt.hist() |
円グラフ | 全体に対する各要素の割合の表示 | plt.pie() |
箱ひげ図 | データの分布(最小値、最大値、四分位数、中央値)の要約と比較 | plt.boxplot() |
棒グラフの例
import matplotlib.pyplot as plt
categories = ['A', 'B', 'C', 'D']
values = [23, 45, 56, 12]
plt.bar(categories, values, color='skyblue') # bar関数を使用
plt.title("Bar Chart Example")
plt.xlabel("Categories")
plt.ylabel("Values")
plt.show()
散布図の例
import matplotlib.pyplot as plt
import numpy as np
# ランダムなデータを生成
np.random.seed(0) # 再現性のために乱数シードを固定
x = np.random.rand(50)
y = np.random.rand(50)
colors = np.random.rand(50) # 色もランダムに
sizes = 1000 * np.random.rand(50) # サイズもランダムに
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='viridis') # scatter関数を使用
plt.title("Scatter Plot Example")
plt.xlabel("X Value")
plt.ylabel("Y Value")
plt.colorbar() # カラーバーを表示
plt.show()
グラフのカスタマイズ🎨
Matplotlibでは、グラフの見た目を細かくカスタマイズできます。
- タイトルとラベル:
plt.title()
,plt.xlabel()
,plt.ylabel()
- 軸の範囲:
plt.xlim()
,plt.ylim()
- 凡例: 複数のデータをプロットした場合に、各データが何を表すかを示すために
plt.legend()
を使います。plt.plot()
などの関数でlabel='...'
引数を指定しておく必要があります。 - 色と線のスタイル:
plt.plot()
などの関数内でcolor='red'
やlinestyle='--'
のように指定します。 - マーカー: データ点を強調するために
marker='o'
のように指定します。 - グリッド線:
plt.grid(True)
で表示できます。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, color='blue', linestyle='-', label='sin(x)') # 青い実線
plt.plot(x, y2, color='red', linestyle='--', marker='o', markersize=4, label='cos(x)') # 赤い破線、小さい円マーカー
plt.title("Customized Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.xlim(0, 10) # X軸の範囲を0から10に
plt.ylim(-1.5, 1.5) # Y軸の範囲を-1.5から1.5に
plt.legend(loc='upper right') # 凡例を右上に表示
plt.grid(True)
plt.show()
複数のグラフを並べる (Subplots)
複数のグラフを一つの描画領域(Figure)内に並べて表示したい場合があります。このような場合はplt.subplots()
関数を使うと便利です。
plt.subplots(行数, 列数)
と指定すると、FigureオブジェクトとAxesオブジェクト(各グラフを描画する領域)の配列(または単一のAxesオブジェクト)が返されます。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 1行2列のサブプロットを作成
fig, axes = plt.subplots(1, 2, figsize=(10, 4)) # figsizeで全体のサイズを指定
# 左側のプロット (axes[0])
axes[0].plot(x, y_sin, color='blue')
axes[0].set_title('Sine Curve')
axes[0].set_xlabel('Radians')
axes[0].set_ylabel('sin(x)')
axes[0].grid(True)
# 右側のプロット (axes[1])
axes[1].plot(x, y_cos, color='red')
axes[1].set_title('Cosine Curve')
axes[1].set_xlabel('Radians')
axes[1].set_ylabel('cos(x)')
axes[1].grid(True)
# レイアウト調整(タイトルなどが重ならないように)
plt.tight_layout()
# 表示
plt.show()
axes
が配列になっているので、インデックス(axes[0]
, axes[1]
)を指定して、それぞれのグラフに対してplot
やset_title
などのメソッドを呼び出します。
さらに学ぶために📚
Matplotlibは非常に多機能なライブラリです。ここで紹介したのは基本的な機能の一部にすぎません。
より高度な使い方や、特定の種類のグラフを作成する方法については、公式ドキュメントやギャラリーを参照することをお勧めします。
- Matplotlib公式サイト: https://matplotlib.org/
- 公式ギャラリー (豊富な例とコード): https://matplotlib.org/stable/gallery/index.html
- 公式チュートリアル: https://matplotlib.org/stable/tutorials/index.html
実際に手を動かしながら、様々なグラフを作成してみるのが上達への近道です!💪
コメント