본문 바로가기
파이썬 (Python)/Numpy

Python 파이썬 numpy, matplotlib 모듈로 3D 그래프를 그려보자

by ★√★ 2021. 2. 26.

안녕하세요, Davey 입니다. 오늘 포스팅 할 내용은, Python 파이썬 라이브러리 중, numpy, matplotlib을 이용하여, 3D 그래프를 그려볼 예정입니다. 지난 포스팅에서는 2D 그래프로 표현하였는데 이번에는 3D로 표현해보도록 하겠습니다.

 

numpy-matplotlib-3D 썸네일
numpy-matplotlib-3D

 

 

지난 시간에 numpy, matplotlib를 이용하여, 그래프를 그리는 포스팅을 했는데, 그 내용을 기초로 하여, 설명할 예정입니다. 혹시 그 포스팅을 안보셨다면 아래 포스팅 먼저 보시고 오시면 도움이 되실 듯 합니다. 

 

 

numpy, matplotlib 선언 하기

 

: numpy, matplotlib 라이브러리르 사용하기 위해서, numpy, matplotlib를 먼저 선언을 해주셔야 합니다. 복습한다고 생각하시고, 아래 내용 참조 부탁 드립니다. 코딩은 안하다보면 그 전에 이해했음에도 불구하고, 기억이 안나더라구요. 

 

==============================================================================

import numpy as np                          # numpy 라이브러리를 선언.
import matplotlib.pyplot as plt         # matplotlib 라이브러리를 선언.



# 3D Graph를 구현하기 위해서, 관련 라이브러리 선언

from mpl_toolkits.mplot3d import Axes3D     
from matplotlib import cm                              
from matplotlib.ticker import LinearLocator, FormatStrFormatter

 

==============================================================================

 

 

3D 그래프를 그리기 위해서 X, Y, Z 축 Souce 코드 짜기

 

: 3D 그래프를 그리기 위해서, X, Y, Z 축에 들어갈 수치를 미리 정의를 해야, 그래프를 그릴 수 있기 때문에, Source 코드를 아래와 같이 짜 봤습니다. 

 

==============================================================================

 

# X, Y, Z 축의 변수를 x,y,z_axis로 선언하여, 1~9 의 숫자를 각 각 Assign 함.

x_axis = np.arange(1,10)
y_axis = np.arange(1,10)
z_axis = np.arange(1,10)

 

==============================================================================

 

- 위 내용에 추가적으로 설명 드릴 내용은, X, Y, Z 축에 Assign 되는 수치의 개수는 모두 똑같아야 한다는 애기입니다. 그래프에서 상호작용을 하기 때문에, 개수가 틀리게 되면, 3D가 아닌 2D 처럼 작용하기 때문에, 선언한 Code에서 별도의 내용을 기재하지 않는 한 Error Message를 출력하게 됩니다. 예를 들어서, "x_axis = np.arange(1,11)" 로 수정하면, 아래와 같은 Error Message가 출력되는 걸 확인 하실 수 있습니다. 

 

numpy-matplotlib-3D-코드-구현사진1
numpy-matplotlib-3D-코드-구현사진1

 

 

3D 그래프 속성 내용 코드 짜기

: 3D 그래프를 그리기 위해서, X, Y, Z 축에 들어갈 수치를 미리 정의를 해야, 그래프를 그릴 수 있기 때문에, Source 코드를 아래와 같이 짜 봤습니다. 

 

==============================================================================

 

import numpy as np                          # numpy 라이브러리를 선언.
import matplotlib.pyplot as plt         # matplotlib 라이브러리를 선언.



# 3D Graph를 구현하기 위해서, 관련 라이브러리 선언

from mpl_toolkits.mplot3d import Axes3D     
from matplotlib import cm                              
from matplotlib.ticker import LinearLocator, FormatStrFormatter



# X, Y, Z 축의 변수를 x,y,z_axis로 선언하여, 1~9 의 숫자를 각 각 Assign 함.

x_axis = np.arange(1,10)
y_axis = np.arange(1,10)
z_axis = np.arange(1,10)



test_graph1 = plt.figure(1)  # 그래프의 흰 도화지 하나를 Assign 하는 code



# 흰 도화지에 subplot을 하나 넣은 Graph를 test_graph2에 Assign 함.

test_graph2 = test_graph1.add_subplot(111,projection = '3d')



# 위에 선언한, Source Code를 test_graph2 속성값을 이용한다는 Code, 색깔은 Red로 한다라고 명시함.

test_graph2.plot(x_axis,y_axis,z_axis, 'r')



# X, Y, Z 축 Label 이름을 Assign 함.

test_graph2.set_xlabel('axis_x')
test_graph2.set_ylabel('axis_y')
test_graph2.set_zlabel('axis_z')



# 흰 도화지의 Title을 "The First 3D Graph"

plt.title('The First 3D Graph')



# 흰 도화지를 보여주는 code

plt.show()

 

==============================================================================

 

- 위 코드를 실행 시켜 보면 아래와 같은 결과 값을 보실 수 있습니다. X, Y, Z 축의 값이 모두 다 똑같기  때문에, 선형적으로 움직이는 것을 확인 하실 수 있습니다.

 

numpy-matplotlib-3D-코드-구현사진2
numpy-matplotlib-3D-코드-구현사진2

 

- Plot 표현하는 방식을, 점으로 표현하고 싶은 아래와 같이 Code를 수정하면, 구현 할 수 있다. 구현한 Graph는 아래와 같습니다.

 

==============================================================================

test_graph2.scatter(x_axis,y_axis,z_axis)

==============================================================================

 

numpy-matplotlib-3D-코드-구현사진3
numpy-matplotlib-3D-코드-구현사진3

 

 

 

X, Y, Z 축 서로 상호 작용하는 Souce 코드 짜서, 3D Graph 구현 해보기.

 

: 2번에 구현한, Source 코드는, 1~9까지의 일정한 숫자만 입력한 상태입니다. 이 입력값을 서로 상호하는 수치값을 구현하여, 3D 그래프를 구현 해보도록 하겠습니다. 수정된 코드는 아래와 같습니다. 

 

==============================================================================

 

import numpy as np                          # numpy 라이브러리를 선언.
import matplotlib.pyplot as plt         # matplotlib 라이브러리를 선언.



# 3D Graph를 구현하기 위해서, 관련 라이브러리 선언

from mpl_toolkits.mplot3d import Axes3D     
from matplotlib import cm                              
from matplotlib.ticker import LinearLocator, FormatStrFormatter



# X, Y, Z 축의 변수를 x,y,z_axis로 선언하여, 1~9 의 숫자를 각 각 Assign 함.

x_axis = np.arange(11,20)
y_axis = x_axis-10
z_axis = 1/np.sqrt(4*x_axis**2)



test_graph1 = plt.figure(1)  # 그래프의 흰 도화지 하나를 Assign 하는 code



# 흰 도화지에 subplot을 하나 넣은 Graph를 test_graph2에 Assign 함.

test_graph2 = test_graph1.add_subplot(111,projection = '3d')



# 위에 선언한, Source Code를 test_graph2 속성값을 이용한다는 Code, 색깔은 Red로 한다라고 명시함.

test_graph2.plot(x_axis,y_axis,z_axis, 'r')



# X, Y, Z 축 Label 이름을 Assign 함.

test_graph2.set_xlabel('axis_x')
test_graph2.set_ylabel('axis_y')
test_graph2.set_zlabel('axis_z')



# 흰 도화지의 Title을 "The First 3D Graph"

plt.title('The First 3D Graph')



# 흰 도화지를 보여주는 code

plt.show()

==============================================================================

 

 

numpy-matplotlib-3D-코드-구현사진4
numpy-matplotlib-3D-코드-구현사진4

 

이상입니다. 2D 뿐만 아니라, 3D도, 이렇게 numpy, matplotlib을 이용하여 그릴 수 있다는 걸 확인 하실 수 있습니다. 사실 이렇게 설명 드리는 것도, 이미, 그 라이브러리에 대해서, 많이 사용하고, 이 부분을 어느 누가 먼저 파악해서, 알려줬기 때문에, 제가 배울 수 있지 않을까 라는 생각을 하게 되었습니다.

 

 즉, 본질적으로는, 그 라이브러리 항목의 홈페이지에 하나 하나 찾아가면서 실행을 해야 진짜 자기 것이 된다는 거라는 거죠. 시간이 많이 필요한 작업인 거 같습니다. 하지만, 머 하나 하나씩 알아가면 언젠가는 저희도 Data Science의 전문가는 아니지만, 약간 말을 섞을 정도로 되지 않을까 라는 기대감을 가지면서, 열심히 공부하시죠! 항상 말씀 드리지만, 공유하고, 공부하고 함께 성장하시죠! 감사합니다.

 

제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다. 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]

 

관련 다른 글

728x90

댓글