python / matplotlib을 사용하여 3d 거기에 대한 "카메라 위치"를 설정하는 방법은 무엇입니까?
mplot3d는 멋진 3D 데이터를 사용하여 생성하는 방법을 배우고 지금까지 매우 기쁩니다. 내가 지금 시도하는 것은 회전하는 표면의 작은 애니메이션입니다. 이를 위해 3D 투영을위한 카메라 위치를 설정해야합니다. matplotlib을 대화 형으로 사용할 때 마우스를 사용하여 표면을 회전 할 수 있기 때문에 이것이 가능해야 생각합니다. 그러나 어디에서 어떻게 할 수 있습니까? mpl_toolkits.mplot3d.proj3d에서 많은 변환을 찾았지만 내 목적으로 사용하는 방법을 찾았지만 내가 원하는 일에 대한 예를 찾지 못했습니다.
"카메라 위치"는 3D 보는 데 사용하는 고도 및 방위각을 조정하려는 것처럼 들립니다. 로 접근 수 있습니다 . 아래 펼쳐서 사용하여 먼저 완성한 다음 높이 또는를 결정 합니다. 그런 다음 방위각 또는 조정하여 주위의 360도 전체를 변경하여 각 인스턴스에서 그림을 저장하고 배치 할 때 방위각을 기록합니다. 보다 복잡한 카메라 팬의 경우 원하는 효과를 위해 고도와 각도를 모두 있습니다.ax.view_initelevazim
from mpl_toolkits.mplot3d import Axes3D
ax = Axes3D(fig)
ax.scatter(xx,yy,zz, marker='o', s=20, c="goldenrod", alpha=0.6)
for ii in xrange(0,360,1):
ax.view_init(elev=10., azim=ii)
savefig("movie%d.png" % ii)
쉽게 찾을 수있는 것입니다. 그래서 나는 음모를 꾸미고 마우스로 거리를 바꾸면서 음모를 움직입니다. 그런 다음 다른 것의 거리를 포함하여 뷰를 복제하십시오. axx.ax.get_axes ()는 오래된 .azim과 .elev를 얻은 것을 얻습니다.
PYTHON에서 ...
axx=ax1.get_axes()
azm=axx.azim
ele=axx.elev
dst=axx.dist # ALWAYS GIVES 10
#dst=ax1.axes.dist # ALWAYS GIVES 10
#dst=ax1.dist # ALWAYS GIVES 10
나중에 3D 그래프 ...
ax2.view_init(elev=ele, azim=azm) #Works!
ax2.dist=dst # works but always 10 from axx
편집 1 ... 좋아, 카메라 위치는 .dist 값에 대한 잘못된 생각입니다. 그것은 전체 그래프에 대해 설명 해커 스칼라 멀티 플라이어로 모든 것을 타고갑니다.
이보기의 확대 / 축소에 크기입니다.
xlm=ax1.get_xlim3d() #These are two tupples
ylm=ax1.get_ylim3d() #we use them in the next
zlm=ax1.get_zlim3d() #graph to reproduce the magnification from mousing
axx=ax1.get_axes()
azm=axx.azim
ele=axx.elev
나중에 그래프 ...
ax2.view_init(elev=ele, azim=azm) #Reproduce view
ax2.set_xlim3d(xlm[0],xlm[1]) #Reproduce magnification
ax2.set_ylim3d(ylm[0],ylm[1]) #...
ax2.set_zlim3d(zlm[0],zlm[1]) #...
'IT' 카테고리의 다른 글
| 트위터 부트 유효성 : 높이가 100 % 인 컨테이너의 div (0) | 2020.07.19 |
|---|---|
| Android의 레이아웃 XML에서 app : srcCompat와 android : src의 차이점 (0) | 2020.07.19 |
| packaged_task와 비동기의 차이점은 무엇입니까 (0) | 2020.07.19 |
| Visual Studio에서 자동 서식 해제 (0) | 2020.07.19 |
| 가상 머신을 시작할 때 "VT-x를 사용할 수 없습니다" (0) | 2020.07.19 |