Python Matplotlib グラフ描画のまとめ 

Python の グラフ描画ツールであるMatlib plot の基本的な使い方をまとめています。

✔インポート

一文、以下のように書くだけで、描画ライブラリをインポートできます。下記の描画例ではこのインポート文を頭に書いています。

import matplotlib.pyplot as plt

✔2次元散布図

2次元散布図を書いてみます。x,yは-1から1までのまでの乱数を生成してプロットしています。

#==================================================
#2D scattering

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(10)
N=300
x=np.random.rand(N)*2-1
y=np.random.rand(N)*2-1


fig0=plt.figure()
plt.scatter(x,y)

plt.title('sample plot')

plt.xlabel('x')
plt.ylabel('y')
#グリッド
plt.grid()
plt.show()

✔3次元散布図

x,yの乱数に対し、z=x^2+y^2を生成し、三次元プロットをしています。

c=’r’ で赤 、marker=’s’ 四角マーク でプロットしています。その他種々の色・マークが用意されています。

 

#==================================================
#3D
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(10)
N=300
x=np.random.rand(N)*2-1
y=np.random.rand(N)*2-1

z=x*x+y*y

fig1 = plt.figure()
ax = Axes3D(fig1)
ax.scatter3D(x,y,z,c='r', marker='s')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.legend(loc='upper left')

✔カラーマップ2次元散布図

z=x^2+y^2の値を色で表現することも可能です。

#==================================================
#2D scattering

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(10)
N=300
x=np.random.rand(N)*2-1
y=np.random.rand(N)*2-1

z=x*x+y*y

fig01=plt.figure()
plt.scatter(x,y,c=z,cmap='Reds' ,marker="o", linewidths="2", edgecolors="orange",s=200)
plt.colorbar()

plt.title('sample plot')

plt.xlabel('x')
plt.ylabel('y')
#グリッド
plt.grid()
plt.show()
#==================================================

✔メッシュグリッドによる3D図

z=x^2+y^2の曲面を描画したい場合は、メッシュグリッドでx,yのメッシュを作成してから描画します。

#==================================================
#3D

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np


fig2 = plt.figure()
ax = fig2.gca(projection='3d')

# Make data.
X = np.arange(-1, 1, 0.005)
Y = np.arange(-1, 1, 0.005)
X, Y = np.meshgrid(X, Y)
#R = np.sqrt(X**2 + Y**2)
#Z = np.sin(R)
Z=X**2+Y**2
# Plot the surface.
surf = ax.plot_surface(X, Y, Z,cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)

ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

#カラーバーを追加 
fig2.colorbar(surf, shrink=0.5, aspect=5)

plt.show()

#==================================================

✔コンター図

コンター図は 同様にメッシュグリッドを切って作成します。contourf と contourがあり、内部を塗りつぶすかどうかが異なります。

contourf

contour

#==================================================
#contour
fig3=plt.figure()
cont = plt.contour(X, Y, Z)
plt.colorbar()
 
plt.gca().set_aspect('equal')
plt.show()

#==================================================
#contourf
fig3=plt.figure()
cont = plt.contourf(X, Y, Z)
plt.colorbar()

 
plt.gca().set_aspect('equal')
plt.show()

#==================================================

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です