본문 바로가기
matplot

[Python] matplotlib를 활용한 3D 그래프 그리기

by Sixty Hertz 2020. 2. 21.

[ matplotlib를 활용한 3D 그래프 그리기 ]

 

 

3D 그래프

import numpy as np
from mpl_toolkits.mplot3d import Axes3D


fig = plt.figure()
ax = Axes3D(fig)

X = np.arange(-5,5,0.2)
Y = np.arange(-5,5,0.2)

X, Y = np.meshgrid(X, Y)                   # X,Y값을 직교좌표계로 변환

Z = np.sqrt(X**2+Y**2)                     # Z = X^2 + Y^2 함수 생성


ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='summer')       # 3D 그래프 생성
ax.contourf(X,Y,Z, zdir='z', offset=0, cmap=plt.cm.summer)          # 등고선 생성
 
plt.show()

 

Z = X^2 + Y^2에 대한 3D 그래프와 등고선을 그린 코드입니다. 2D로 그리면 원형모양 그래프가 그려지는데 3D로 그리면 위 그래프처럼 재미있는 모양이 나오네요^^

 

3D 그래프는 X,Y에 대한 2차원 직교그래프에 Z축을 추가한 개념인데 이를 위해 X,Y를 직교좌표값으로 변환하는 과정이 필요합니다.

 

이게 np.meshgrid의 역할이고 3D 그래프 생성을 위해 필요한 과정입니다.

 

ax.plot_surface는 3D 그래프 생성을 하며, rstride와 cstride는 각각 row와 column의 sample의 추출간격을 의미합니다. 가령 rstride와 cstride의 입력값을 1에서 5로 변경하면 아래와 같이 그래프가 바뀝니다.

ax.contourf는 X,Y,Z 값에 대한 바닥에 등고선을 그리는 기능을 수행하며 인수로 들어가 있는 offset은 등고선의 위치를 지정합니다. 0이외에 다른 숫자를 넣으면 위치가 변합니다. zdir은 어떤 방향을 Z축 방향으로 사용할지 지정합니다. zdir은 X,Y,Z 세가지로 지정이 가능합니다.

댓글