Study/Python

matplotlib에서 3D view의 axis ratio(비율) 조정하기

13.d_dk 2023. 4. 21. 10:54
728x90
반응형

해결하고자 하는 문제

  • python을 통한 matplotlib기반 visualization에서 axis의 ratio를 조절해야할 때가 있음

 

해결 방법 : set_box_aspect 함수를 사용

    • set_box_aspect() 함수를 사용하여 플롯의 가로 세로 비율을 설정할 수 있음
    • 이 함수는 x, y, z 축 비율을 나타내는 세 가지 값의 목록을 받음
    • 아래의 예제에서는 현재 코드는 각 축에 대한 데이터 범위의 실제 차이를 반영하도록 종횡비를 설정
    • 실제 데이터 범위와 관계없이 세 축 모두에 대해 종횡비를 동일하게 설정하는 주석 처리된 대체 방법도 포함되어 있음
    • 아래는 예제코드임
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
 
# create example data
= [12345]
= [3691215]
= [246810]
 
# create plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z)
 
# set aspect ratio for real diff. ####
ax.set_box_aspect([max(x)-min(x), 
                   max(y)-min(y), 
                   max(z)-min(z)])
 
# set aspect ratio for same ##########
# ax.set_box_aspect([1, 1, 1])
 
# show plot
plt.show()
 
cs
  • 실제 차이를 반영한 각 축의 비율

  • 1, 1, 1로 고정한 각 축의 비율

반응형