python 에서 Matplotlib 는 3D 그림 을 그 리 는 예제 코드 를 실현 합 니 다.
5364 단어 pythonmatplotlib3d
mplot3d 모듈 에는 주로 4 개의 큰 유형 이 포함 되 어 있 습 니 다.각각:
일반적으로 우리 가 가장 많이 사용 하 는 것 은 mpl 이다.toolkits.mplot3d.axes3d()의 mpltoolkits.mplot3d.axes3d.Axes3D()류 는 Axes3D()아래 에 서로 다른 유형의 3D 그림 을 그 리 는 방법 이 존재 합 니 다.Axes3D()를 아래 방식 으로 가 져 올 수 있 습 니 다.
from mpl_toolkits.mplot3d.axes3d import Axes3D 또는 from mpltoolkits.mplot3d import Axes3D
삼 차원 산 점도
우선,우 리 는 numpy 를 가 져 와 무 작위 로 데 이 터 를 만 듭 니 다.
import numpy as np
# x, y, z 0 1 100
x = np.random.normal(0, 1, 100)
y = np.random.normal(0, 1, 100)
z = np.random.normal(0, 1, 100)
다음 그림 그리 기 시작 합 니 다.첫 번 째 단 계 는 2D,3D 그래 픽 모듈 을 불 러 오 는 것 입 니 다.
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
두 번 째 단 계 는 Axes3D()를 사용 하여 3D 그래 픽 대상 을 만 듭 니 다.
fig = plt.figure()
ax = Axes3D(fig)
마지막 으로 산 점도 그리 기 방법 으로 그림 을 그리고 표시 합 니 다.
ax.scatter(x, y, z)
plt.show()
삼 차원 선형 도선형 도 는 산 점도 와 비슷 하 므 로 x,y,z 세 좌표 의 수 치 를 전달 해 야 한다.자세 한 코드 는 다음 과 같 습 니 다.
#
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
#
x = np.linspace(-6 * np.pi, 6 * np.pi, 1000)
y = np.sin(x)
z = np.cos(x)
# 3D
fig = plt.figure()
ax = Axes3D(fig)
#
ax.plot(x, y, z)
#
plt.show()
삼 차원 막대 그래프선형 그림 을 다 그 렸 습 니 다.우 리 는 3 차원 막대 그래프 를 계속 그 려 보 았 습 니 다.사실은 그 그리 기 절차 가 위 와 똑 같 습 니 다.
#
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
# 3D
fig = plt.figure()
ax = Axes3D(fig)
#
x = [0, 1, 2, 3, 4, 5, 6]
for i in x:
y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
z = abs(np.random.normal(1, 10, 10))
ax.bar(y, z, i, zdir='y', color=['r', 'g', 'b', 'y'])
plt.show()
삼 차원 도 곡면 도다음 에 그 려 야 할 3 차원 곡면 도 는 좀 번 거 로 워 야 한다.우 리 는 데이터 에 대해 행렬 처 리 를 해 야 한다.사실 2 차원 등고선 도 를 그 리 는 것 과 비슷 하지만 한 차원 을 더 늘 렸 을 뿐이다.
#
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 3D
fig = plt.figure()
ax = Axes3D(fig)
#
X = np.arange(-2, 2, 0.1)
Y = np.arange(-2, 2, 0.1)
X, Y = np.meshgrid(X, Y)
Z = np.sqrt(X ** 2 + Y ** 2)
# , cmap
ax.plot_surface(X, Y, Z, cmap=plt.cm.winter)
plt.show()
cmap=plt.cm.winter 는 winter 배색 방안,즉 아래 그림 의 그 라 데 이 션 색 을 사용 했다 고 밝 혔 다.혼합 도 그리 기
혼합 도 는 두 가지 서로 다른 유형의 그림 을 한 장의 그림 에 그 리 는 것 이다.혼합 도 를 그 리 는 데 는 일반적으로 전제 조건 이 있다.그것 은 두 가지 서로 다른 유형의 그림 의 범위 가 대체적으로 같다 는 것 이다.그렇지 않 으 면 심각 한 비례 가 조 화 롭 지 못 해 혼합 도 를 의 미 를 잃 게 할 것 이다.
# -*- coding: utf-8 -*
#
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
# 3D
fig = plt.figure()
ax = Axes3D(fig)
# 1
x1 = np.linspace(-3 * np.pi, 3 * np.pi, 500)
y1 = np.sin(x1)
ax.plot(x1, y1, zs=0, c='red')
# 2
x2 = np.random.normal(0, 1, 100)
y2 = np.random.normal(0, 1, 100)
z2 = np.random.normal(0, 1, 100)
ax.scatter(x2, y2, z2)
#
plt.show()
하위 그림 그리 기
# -*- coding: utf-8 -*
#
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
# 1
fig = plt.figure()
#===============
# 1
ax1 = fig.add_subplot(1, 2, 1, projection='3d')
# 1
x = np.linspace(-6 * np.pi, 6 * np.pi, 1000)
y = np.sin(x)
z = np.cos(x)
# 1
ax1.plot(x, y, z)
#===============
# 2
ax2 = fig.add_subplot(1, 2, 2, projection='3d')
# 2
X = np.arange(-2, 2, 0.1)
Y = np.arange(-2, 2, 0.1)
X, Y = np.meshgrid(X, Y)
Z = np.sqrt(X ** 2 + Y ** 2)
# 2
ax2.plot_surface(X, Y, Z, cmap=plt.cm.winter)
#
plt.show()
우 리 는 이 코드 들 을 좀 볼 수 있다.두 장의 자 도 는 캔버스 한 장 위 에 그 려 져 있 기 때문에 미리 캔버스 한 장 을 만들어 야 한다.그리고.add 를 통 해subplot()는 하위 그림 을 추가 합 니 다.하위 그림 번 호 는 2 차원 그림 과 비슷 합 니 다.다만 3D 그림 을 그 릴 때 procjection='3d'인 자 를 추가 해 야 합 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.