matplotlibのcontourで等高線グラフを描く方法【図解でわかりやすく解説】

※本サイトにはプロモーション・広告が含まれています。

(最終更新月: 2024年1月)

✔こんな方におすすめの記事です

「matplotlibのcontourで等高線グラフを描きたい」
「等高線グラフの描き方がわからない」
「contourプロットの色や線の調整方法を知りたい」

✔当記事を通じて得られること

  • matplotlibのcontourの基本的な使い方
  • 等高線グラフの見やすい調整方法
  • 実践的なグラフ作成のテクニック

当記事では、matplotlibのcontourの基本から応用まで、実例を交えて幅広く解説していきます。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

contourとは何か?

matplotlibのcontourは、2次元平面上に等高線を描画するための強力な機能です。
地図の等高線のように、同じ高さの点を線で結んで表現できるため、データの分布を視覚的に理解しやすくなります。

  • contourの基本概念
  • contourプロットの種類
  • contourが適している場面

contourの基本概念

contourは、3次元データを2次元平面上に表現する手法の一つです。
山の等高線図のように、同じ値を持つ点を線で結ぶことで、データの分布を表現できます。
例えば以下のようなコードで、基本的な等高線グラフを描くことができます。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

plt.contour(X, Y, Z)
plt.show()

contourプロットの種類

matplotlibには、2種類の主要な等高線プロット関数が用意されています。
それぞれの特徴を理解することで、目的に応じた適切な可視化が可能になるのです。
以下に、代表的な関数を示します。

  • contour(): 等高線のみを描画
  • contourf(): 等高線間を塗りつぶして描画
  • clabel(): 等高線に値のラベルを付加

contourが適している場面

等高線プロットは、特定のデータ分析シーンで威力を発揮します。
地形データや気象データの可視化などで頻繁に使用されています。
具体的な活用例として、以下のようなケースが挙げられます。

  • 地形の標高データの可視化
  • 気圧や気温の分布図の作成
  • 機械学習での決定境界の表示

基本的な使い方

contourを使用するための基本的な手順を説明していきます。
まずは簡単な例から始めて、徐々に応用的な使い方を学んでいきましょう。

  • データの準備方法
  • 基本的なプロット方法
  • グラフの表示と保存

データの準備方法

contourプロットを作成するには、適切なデータ形式が必要です。
通常、X座標、Y座標、そしてそれらの点での高さを表すZ値が必要になります。
以下のコードで、サンプルデータを作成できます。

import numpy as np

# データポイントの生成
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)

# メッシュグリッドの作成
X, Y = np.meshgrid(x, y)

# Z値の計算(例:2変数関数)
Z = X**2 + Y**2

基本的なプロット方法

準備したデータを使って、基本的な等高線プロットを作成します。
matplotlibのcontour関数を使用することで、簡単に等高線グラフを描くことができます。
実際のコード例を見てみましょう。

import matplotlib.pyplot as plt

# 基本的な等高線プロット
plt.figure(figsize=(8, 6))
plt.contour(X, Y, Z)
plt.colorbar()
plt.title('Basic Contour Plot')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

グラフの表示と保存

作成したグラフは、表示や保存が可能です。
目的に応じて適切な形式で出力することができます。
以下のコードで、グラフの保存方法を確認できます。

# グラフの保存
plt.savefig('contour_plot.png', dpi=300, bbox_inches='tight')
plt.close()

グラフのカスタマイズ方法

等高線グラフをより見やすく、美しく表現するためのカスタマイズ方法を解説します。
色や線の設定を変更することで、データをより効果的に可視化できます。
ここでは以下の項目について詳しく説明していきます。

  • 色の設定方法
  • 線のスタイル設定
  • ラベルの追加方法

色の設定方法

contourプロットの色は、カラーマップを使って自由にカスタマイズできます。
適切な色の選択により、データの違いをより明確に表現することが可能です。
以下のコードで、様々な色設定を試すことができます。

# カラーマップの設定
plt.figure(figsize=(8, 6))
plt.contour(X, Y, Z, cmap='viridis')
plt.colorbar()
plt.show()

# 色の範囲指定
plt.figure(figsize=(8, 6))
plt.contour(X, Y, Z, levels=np.linspace(-10, 10, 20))
plt.colorbar()
plt.show()

線のスタイル設定

等高線の線種や太さを変更することで、グラフの見た目を改善できます。
データの重要度に応じて、線の特徴を変えることも可能です。
具体的な設定方法は以下のとおりです。

# 線の太さと種類の設定
plt.figure(figsize=(8, 6))
plt.contour(X, Y, Z, 
            linewidths=2,
            linestyles='dashed')
plt.colorbar()
plt.show()

ラベルの追加方法

等高線に値のラベルを追加することで、データの理解が容易になります。
clabel関数を使用することで、等高線上に数値を表示できます。
以下のコードで、ラベルの追加方法を確認できます。

# ラベルの追加
plt.figure(figsize=(8, 6))
CS = plt.contour(X, Y, Z)
plt.clabel(CS, inline=True, fontsize=10)
plt.colorbar()
plt.show()

応用的な使い方

より高度な可視化を実現するための応用的な使い方を紹介します。
複雑なデータの表現や、美しいグラフ作成のテクニックを学びましょう。
以下の項目について詳しく解説します。

  • 塗りつぶしの等高線
  • 複数のプロットの組み合わせ
  • アニメーションの作成

塗りつぶしの等高線

contourではなく、contourfを使用することで、等高線間を色で塗りつぶすことができます。
これにより、データの変化をより直感的に理解することが可能です。
実装方法は以下のとおりです。

# 塗りつぶしの等高線プロット
plt.figure(figsize=(8, 6))
plt.contourf(X, Y, Z, levels=20, cmap='RdYlBu')
plt.colorbar()
plt.show()

複数のプロットの組み合わせ

contourプロットと他のプロットを組み合わせることで、より豊かな情報を表現できます。
散布図や等高線を重ねることで、データの関係性をより深く理解できます。
以下のコードで、複数プロットの組み合わせ方を確認できます。

# 等高線と散布図の組み合わせ
plt.figure(figsize=(8, 6))
plt.contour(X, Y, Z, colors='black')
plt.scatter(X[::10, ::10], Y[::10, ::10], c='red', s=1)
plt.colorbar()
plt.show()

アニメーションの作成

時間変化するデータを等高線アニメーションとして表現することも可能です。
matplotlibのアニメーション機能を使用することで、動的な可視化が実現できます。
以下のコードで、基本的なアニメーションを作成できます。

from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()

def update(frame):
    ax.clear()
    Z = np.sin(np.sqrt(X**2 + Y**2) + frame/10)
    ax.contour(X, Y, Z)
    return ax,

ani = FuncAnimation(fig, update, frames=100, interval=50)
plt.show()

まとめ

当記事では、matplotlibのcontourについて学習してきました。

  • 等高線プロットの基本的な概念と使い方を理解できました
  • グラフのカスタマイズ方法や応用的なテクニックを習得しました
  • 実践的なデータ可視化の手法を身につけることができました

これらの知識を活かして、ぜひ自分のデータで等高線プロットを作成してみてください。
データの可視化は、分析結果を効果的に伝えるための重要なスキルです。
さらに高度な表現方法を探求することで、より魅力的なデータ表現が可能になるでしょう。

タイトルとURLをコピーしました