Pythonで等高線プロット(matplotlib.pyplot.contour)

こんにちは.
Pythonでmatplotlib.pyplot.contourを使った等高線プロットです.
ここではf(x, y)=0を描くことで円を表現してみました.
hこれは分類問題の境界を描く時とかに使えると思います.
単にcontourのlevelsパラメータを変更すれば良いみたいです.

# ~*- coding: utf-8 -*-
"""
等高線プロットのテスト
"""

import numpy as np
import matplotlib.pyplot as plt

n = 100
x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)
X, Y = np.meshgrid(x, y)

# 原点中心,半径1の円
Z = X**2 + Y**2 - 1
plt.contour(X, Y, Z, levels=[0])
plt.show()

# 中心(2, 1),半径1の円
Z = (X-2)**2 + (Y-1)**2 - 1
plt.contour(X, Y, Z, levels=[0])
plt.show()

# 関数で表現
def circle(x, y):
    return (x-2)**2 + (y-1)**2 - 1
Z = circle(X, Y)
plt.contour(X, Y, Z, levels=[0])
plt.show()

# パラメータR,cを与えることのできる関数から作成
# デフォルトは中心(0,0)半径1の円
def circle(x, y, c=[0, 0], R=1):
    return (x-c[0])**2 + (y-c[1])**2 - R**2
Z = circle(X, Y, c=[2, 1], R=2)
plt.contour(X, Y, Z, levels=[0])
plt.show()

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中