[Python에 의한 과학·기술 계산] 2차원(컬러) 등고선 등의 묘화, 가시화, matplotlib

소개



matplotlib의 pcolor, imshow, contour 메소드를 사용하여 등고선 다이어그램을 만듭니다.

추가:
2017년 8월 28일: pcolormesh와 contour를 믹스한 내용(4)을 추가했다.

내용



(1) $z=sin(x)+cos(y)$를 생각하고 그것을 [0, x, 10], [0, y, 10]의 범위에서 pcolor로 그린다.
pcolormesh를 사용하고 있습니다. pcolor()보다 빠릅니다.

(2) impshow를 사용한 드로잉 예

(3) contor를 사용한 등고선도

(4) pcolormesh와 contour를 믹스한 그림

예 (1) : pcolormesh 사용



import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 10, 0.05) #x軸の描画範囲の生成。0から10まで0.05刻み。
y = np.arange(0, 10, 0.05) #y軸の描画範囲の生成。0から10まで0.05刻み。

X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y)   # 表示する計算式の指定。等高線はZに対して作られる。

plt.pcolormesh(X, Y, Z, cmap='hsv') # 等高線図の生成。cmapで色付けの規則を指定する。
#plt.pcolor(X, Y, Z, cmap='hsv') # 等高線図の生成。cmapで色付けの規則を指定する。

pp=plt.colorbar (orientation="vertical") # カラーバーの表示 
pp.set_label("Label", fontname="Arial", fontsize=24) #カラーバーのラベル

plt.xlabel('X', fontsize=24)
plt.ylabel('Y', fontsize=24)

plt.show()



결과 (1) : pcolormesh를 사용한 다이어그램





예 (2) : impshow 사용



2차원 배열을 서서히 가시화하고 싶은 경우는 matplotlib.pyplot.imshow()를 사용하면 좋다.
import numpy as np
import matplotlib.pyplot as plt

z=np.zeros([100,100])
for i in range(100):
    for j in range(100):
        z[i,j] = i+j

plt.imshow(z)
plt.colorbar () # カラーバーの表示 
plt.xlabel('X')
plt.ylabel('Y')
plt.show()


결과 (2): impshow





예 (3) contour를 사용한 등고선도


import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 10, 0.05) #x軸の描画範囲の生成。0から10まで0.05刻み。
y = np.arange(0, 10, 0.05) #y軸の描画範囲の生成。0から10まで0.05刻み。

X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y)   # 表示する計算式の指定。等高線はZに対して作られる。

# 等高線図の生成。
cont=plt.contour(X,Y,Z,  5, Vmax=1,colors=['black'])
cont.clabel(fmt='%1.1f', fontsize=14)


pp=plt.colorbar (orientation="vertical") # カラーバーの表示 
pp.set_label("Label", fontname="Arial", fontsize=24) #カラーバーのラベル



plt.xlabel('X', fontsize=24)
plt.ylabel('Y', fontsize=24)

plt.show()


결과(3): contour 다이어그램





예 (4) pcolormesh와 contour의 믹스


import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 10, 0.05) #x軸の描画範囲の生成。0から10まで0.05刻み。
y = np.arange(0, 10, 0.05) #y軸の描画範囲の生成。0から10まで0.05刻み。

X, Y = np.meshgrid(x, y)
Z = np.sin(X) + np.cos(Y)   # 表示する計算式の指定。等高線はZに対して作られる。

# 等高線図の生成。
cont=plt.contour(X,Y,Z,  5, vmin=-1,vmax=1, colors=['black'])
cont.clabel(fmt='%1.1f', fontsize=14)


plt.xlabel('X', fontsize=24)
plt.ylabel('Y', fontsize=24)


plt.pcolormesh(X,Y,Z, cmap='cool') #カラー等高線図
pp=plt.colorbar (orientation="vertical") # カラーバーの表示 
pp.set_label("Label",  fontsize=24)

plt.show()


결과 (4) : pcolormesh와 contour의 혼합





[부록]



컬러맵 지정의 cmap로 패턴을 지정한다. 패턴은 수십 종류 준비되어 있다. 여기에 샘플이 있습니다.

'prism', 'ocean', 'gist_earth', 'terrain', 'gist_stern',
'gnuplot', 'gnuplot2', 'CMRmap', 'cubehelix', 'brg', 'hsv',
'gist_rainbow', 'rainbow', 'jet', 'nipy_spectral', 'gist_ncar'

좋은 웹페이지 즐겨찾기