- Matplotlib Tutorial - 파이썬으로 데이터 시각화하기
- Matplotlib 설치하기
- Matplotlib 기본 사용
- Matplotlib 숫자 입력하기
- Matplotlib 축 레이블 설정하기
- Matplotlib 범례 표시하기
- Matplotlib 축 범위 지정하기
- Matplotlib 선 종류 지정하기
- Matplotlib 마커 지정하기
- Matplotlib 색상 지정하기
- Matplotlib 그래프 영역 채우기
- Matplotlib 축 스케일 지정하기
- Matplotlib 여러 곡선 그리기
- Matplotlib 그리드 설정하기
- Matplotlib 눈금 표시하기
- Matplotlib 타이틀 설정하기
- Matplotlib 수평선/수직선 표시하기
- Matplotlib 막대 그래프 그리기
- Matplotlib 수평 막대 그래프 그리기
- Matplotlib 산점도 그리기
- Matplotlib 3차원 산점도 그리기
- Matplotlib 히스토그램 그리기
- Matplotlib 에러바 표시하기
- Matplotlib 파이 차트 그리기
- Matplotlib 히트맵 그리기
- Matplotlib 여러 개의 그래프 그리기
- Matplotlib 컬러맵 설정하기
- Matplotlib 텍스트 삽입하기
- Matplotlib 수학적 표현 사용하기
- Matplotlib 그래프 스타일 설정하기
- Matplotlib 이미지 저장하기
- Matplotlib 객체 지향 인터페이스 1
- Matplotlib 객체 지향 인터페이스 2
- Matplotlib 축 위치 조절하기
- Matplotlib 이중 Y축 표시하기
- Matplotlib 두 종류의 그래프 그리기
- Matplotlib 박스 플롯 그리기
- Matplotlib 바이올린 플롯 그리기
- Matplotlib 다양한 도형 삽입하기
- Matplotlib 다양한 패턴 채우기
- Matplotlib 애니메이션 사용하기 1
- Matplotlib 애니메이션 사용하기 2
- Matplotlib 3차원 Surface 표현하기
- Matplotlib 트리맵 그리기 (Squarify)
- Matplotlib Inset 그래프 삽입하기
- Python Tutorial
- NumPy Tutorial
- Matplotlib Tutorial
- PyQt5 Tutorial
- BeautifulSoup Tutorial
- xlrd/xlwt Tutorial
- Pillow Tutorial
- Googletrans Tutorial
- PyWin32 Tutorial
- PyAutoGUI Tutorial
- Pyperclip Tutorial
- TensorFlow Tutorial
- Tips and Examples
Matplotlib 3차원 Surface 표현하기¶
이 페이지에서는 plot_surface() 함수의 사용법을 소개합니다.
plot_surface() 함수를 사용해서 2차원 어레이를 3차원 Surface로 표현할 수 있습니다.
■ Table of Contents
1) 기본 사용¶
예제1¶
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.linspace(-10, 10, 11)
X = np.tile(x, (11, 1))
Y = np.transpose(X)
Z = np.random.rand(11, 11)
ax.plot_surface(X, Y, Z)
ax.set_zlim(-10, 10)
plt.tight_layout()
plt.show()
3차원 Axes 객체 (Axes3D)를 사용하기 위해 우선 mpl_toolkits.mplot3d.axes3d 모듈을 Import 합니다.
add_subplot()의 projection=’3d’ 키워드를 사용해서 Axes3D 객체를 생성합니다.
Axes3D 객체의 plot_surface() 함수는 2차원 어레이 형태 X, Y, Z를 3차원 Surface로 표현합니다.
X, Y는 -10에서 10 범위에서 11개의 값을 갖도록 만들어진 2차원 어레이입니다.
np.linspace, np.tile, np.transpose 함수의 사용에 대해서는 링크를 참고하세요.
Z는 0에서 1사이의 값을 갖는 2차원 난수 어레이입니다.
np.random.rand 함수의 사용에 대해서는 링크를 참고하세요.
set_zlim()을 사용해서 Z축의 범위를 -10에서 10으로 지정했습니다.
예제2¶
# from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
#fig = plt.figure()
#ax = fig.add_subplot(111, projection='3d')
x = np.linspace(-10, 10, 11)
X = np.tile(x, (11, 1))
Y = np.transpose(X)
Z = np.random.rand(11, 11)
ax.plot_surface(X, Y, Z)
ax.set_zlim(-10, 10)
plt.tight_layout()
plt.show()
Matplotlib 3.2.0 버전부터 from mpl_toolkits.mplot3d import axes3d를 명시적으로 Import하지 않아도 됩니다. (참고)
예제2와 예제1은 같은 결과를 보여줍니다.
2) 축 눈금 지정하기¶
예제¶
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.linspace(-10, 10, 11)
X = np.tile(x, (11, 1))
Y = np.transpose(X)
Z = np.random.rand(11, 11)
Z2 = 1.5 * np.random.rand(11, 11) + 2
Z3 = np.random.rand(11, 11) - 2
ax.plot_surface(X, Y, Z)
ax.plot_surface(X, Y, Z2)
ax.plot_surface(X, Y, Z3)
ax.set_zlim(-10, 10)
ax.set_xticks([-10, -5, 0, 5, 10])
ax.set_yticks([-10, -5, 0, 5, 10])
ax.set_zticks([-10, -5, 0, 5, 10])
plt.tight_layout()
plt.show()
이번에는 세 개의 2차원 어레이를 3차원 Surface로 표현했습니다.
set_xticks(), set_yticks(), set_zticks()는 X, Y, Z축의 눈금의 위치를 지정합니다.
결과는 아래와 같습니다.
3) 컬러맵, 컬러바 사용하기¶
예제¶
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.linspace(-10, 10, 11)
X = np.tile(x, (11, 1))
Y = np.transpose(X)
Z = 2 * np.random.rand(11, 11) - 1
surf = ax.plot_surface(X, Y, Z, cmap='viridis')
ax.set_zlim(-5, 5)
ax.set_xticks([-10, -5, 0, 5, 10])
ax.set_yticks([-10, -5, 0, 5, 10])
ax.set_zticks([-5, 0, 5])
fig.colorbar(surf, shrink=0.6, aspect=8)
surf.set_clim(-1.0, 1.0)
plt.tight_layout()
plt.show()
plot_surface() 함수의 cmap은 3차원 Surface의 컬러맵을 지정합니다.
colorbar()를 호출하면 그래프에 컬러바를 표시합니다.
shrink는 컬러바의 크기, aspect는 컬러바의 종횡비를 지정합니다.
아래와 같은 그래프가 만들어집니다.