안녕하세요, Davey 입니다. 오늘 포스팅 할 내용은, Python 파이썬 라이브러리 중, numpy, matplotlib을 이용하여, 3D 그래프를 그려볼 예정입니다. 지난 포스팅에서는 2D 그래프로 표현하였는데 이번에는 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가 출력되는 걸 확인 하실 수 있습니다.
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 축의 값이 모두 다 똑같기 때문에, 선형적으로 움직이는 것을 확인 하실 수 있습니다.
- Plot 표현하는 방식을, 점으로 표현하고 싶은 아래와 같이 Code를 수정하면, 구현 할 수 있다. 구현한 Graph는 아래와 같습니다.
==============================================================================
test_graph2.scatter(x_axis,y_axis,z_axis)
==============================================================================
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()
==============================================================================
이상입니다. 2D 뿐만 아니라, 3D도, 이렇게 numpy, matplotlib을 이용하여 그릴 수 있다는 걸 확인 하실 수 있습니다. 사실 이렇게 설명 드리는 것도, 이미, 그 라이브러리에 대해서, 많이 사용하고, 이 부분을 어느 누가 먼저 파악해서, 알려줬기 때문에, 제가 배울 수 있지 않을까 라는 생각을 하게 되었습니다.
즉, 본질적으로는, 그 라이브러리 항목의 홈페이지에 하나 하나 찾아가면서 실행을 해야 진짜 자기 것이 된다는 거라는 거죠. 시간이 많이 필요한 작업인 거 같습니다. 하지만, 머 하나 하나씩 알아가면 언젠가는 저희도 Data Science의 전문가는 아니지만, 약간 말을 섞을 정도로 되지 않을까 라는 기대감을 가지면서, 열심히 공부하시죠! 항상 말씀 드리지만, 공유하고, 공부하고 함께 성장하시죠! 감사합니다.
제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다.
[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]
관련 다른 글
'파이썬 (Python) > Numpy' 카테고리의 다른 글
Python 파이썬 numpy, matplotlib 모듈로 meshgrid 구현 및 이해해보자! (0) | 2021.02.27 |
---|---|
Python 파이썬 numpy, matplotlib 모듈로 그래프를 손쉽게 그려보자 (1) | 2021.02.26 |
Python 파이썬 numpy 함수 any, all, where, 행렬 인덱싱(index)과 슬라이싱 (1) | 2021.02.25 |
Python 파이썬 numpy 함수 행렬간 사칙 연산 (add, substract, multiply, divide) 누적 합계, 평균, 최대값, 조건값의 인덱스 출력 (1) | 2021.02.25 |
Python 파이썬 numpy 함수 Boolean indexing 리스트, 조건 값에 맞춰서 리스트 화 (0) | 2021.02.22 |
댓글