PR

matplotlibの応用: 2次元メッシュの描画方法

matplotlib

機械学習や科学計算などでデータを扱う際に、その関係性やパターンを可視化することは重要です。Pythonのライブラリであるmatplotlibを使用することで、簡単に2次元メッシュを描画することができます。この記事では、その方法について詳しく解説します。

3次元で散布図を描きたい方はこちらを参考にしてください。

スポンサーリンク

matplotlibとは

プログラミング言語Pythonおよびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリである。オブジェクト指向のAPIを提供しており、様々な種類のグラフを描画する能力を持つ。描画できるのは主に2次元のプロットだが、3次元プロットの機能も追加されてきている。描画したグラフを各種形式の画像(各種ベクトル画像形式も含む)として保存することもできる(Wiki参照)

matplotlib – Wikipedia
スポンサーリンク

基本のプロット

まずは基本的なソースコードを紹介します。以下のコードは、2次元メッシュを作成し、その結果を3次元のワイヤーフレームでプロットします。

データはNumpyを用いて-5~5までの範囲の総組合せの配列を作成し、x,yを与えると適当な返り値が与えられる関数を用意しました。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

def func(x,y):
    return (np.sin(x))* (np.cos(y)-x)**2

x = np.arange(-5, 5, 0.25)
y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(x, y)
Z = func(X, Y)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(X, Y, Z)
plt.show()

問題なくプロットされてます。3次元プロットグラフには特別な機能が付き、ドラッグで回ります。

f:id:ct-innovation01:20171013133046g:plain
スポンサーリンク

見た目のカスタマイズ

プロットの見た目をカスタマイズするためには、色やマーカーの形などを調整することができます。以下の例では、色をカスタマイズする方法を紹介しています。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from matplotlib import cm

def func(x,y):
    return (np.sin(x))* (np.cos(y)-x)**2

def min_max(x, axis=None):
    min = x.min(axis=axis, keepdims=True)
    max = x.max(axis=axis, keepdims=True)
    result = (x-min)/(max-min)
    return result

x = np.arange(-5, 5, 0.25)
y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(x, y)
Z = func(X, Y)

c = min_max(x)
cmap = plt.get_cmap("Blues")

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(X, Y, Z, colors=cmap(c))
plt.show()

このコードでは、カラーマップを使用してワイヤーフレームの色を変更しています。

Tips:主要なカスタマイズキーワード

matplotlibでは、さまざまなカスタマイズキーワードを使用することでプロットの見た目を調整することができます。以下の表は、主要なカスタマイズキーワードの例を示しています。

kywd入力例備考
x,y,z[1,2,3,4,5] または 事前に定義したlistなどarray形式のもの
※必須
cc=”red” または
c=”#FFFF00″ または
c=(1.0,0,1.0)
ラインの色
色名や16進数、RGBでの指定が可能
labellabel=”label1″凡例名

色見本

color example code: named_colors.py — Matplotlib 2.0.2 documentation

スポンサーリンク

見た目のカスタマイズ(目盛り線)

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from matplotlib import cm

def func(x,y):
    return (np.sin(x))* (np.cos(y)-x)**2

def min_max(x, axis=None):
    min = x.min(axis=axis, keepdims=True)
    max = x.max(axis=axis, keepdims=True)
    result = (x-min)/(max-min)
    return result

x = np.arange(-5, 5, 0.25)
y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(x, y)
Z = func(X, Y)

c = min_max(x)
cmap = plt.get_cmap("Blues")

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(X, Y, Z, colors=cmap(c))
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
スポンサーリンク

まとめ

この解説記事では、matplotlibを使用して2次元メッシュのプロット方法について詳しく解説しました。基本的なプロットから見た目のカスタマイズまでを網羅し、読者がデータの可視化に役立てることができるように努めました。matplotlibを使いこなすことで、データ解析や可視化のスキルを向上させ、さまざまな分野での応用が可能になります。

コメント

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