Mayavi의 설명서 "http://docs.enthought.com/mayavi/mayavi/building_applications.html"을 읽는 것은 나를 혼란스럽게 만듭니다.Mayavi를 사용하여 대화식으로 3D 플롯을 수행하는 간단한 방법은 무엇입니까?
사용자 상호 작용을 허용하는 3 차원 플롯을 원한다면 (예 : 슬라이더를 드래그하고 플롯의 내용을 변경하는 경우) 에의 특성을 사용하는 것이 맞습니까? 설명서에 따르면 표준 절차는 다음과 같습니다.
class visual(HasTraits):
scene = ...
view = View(...)
@on_trait_change(...)
def do_something()
...
어떤 특징이 있는지 모르겠습니다. 나는 생성자 밖에서 정의 된 클래스의 속성 ('특성')이 무엇인지 이해하지 못합니다.
원래 질문으로 돌아가서, 변경 가능한 3D 플롯을 원한다면 왜 직접하지 않습니까? 난 상관하지 않는 경우
import numpy as np
from mayavi import mlab
from matplotlib import pyplot as plt
from matplotlib.widgets import Slider
def slider_changed(val):
s.mlab_source.scalars = np.asarray(x * (val + 1), 'd')
# mayavi 3d plot
x, y = np.mgrid[0:3:1,0:3:1]
s = mlab.surf(x, y, np.asarray(x*0.1, 'd'))
# a matplotlib slider
plt.figure()
ax = plt.subplot(1, 1, 1)
slider = Slider(ax, valmin=0., valmax=1., label='test')
slider.on_changed(slider_changed)
plt.show()
mlab.show()
에 대한 애플리케이션에서 3D 플롯을 내장 나에게 보인다이 그것을 할 수있는 더 간단한 방법은, 다음과 같이 작업 예는? 3d 플롯의 많은 특성은 mlab_source
의 속성을 통해 조작 할 수 있습니다. 여기 matplotlib 슬라이더를 예제로 사용하고 있지만, pyqt UI 또는 다른 것일 수 있습니다.
그러나, 문서는 파이프 라인 및 파이프 라인 개체의
모든 다른 속성이, 형질 그들이가 수정되었을 경우, 대화 상자 및 화재 콜백으로 시각화 할 수 있습니다 즉 특별한 속성을 표현했다. 특히 이것은 시각화 개체가 수정 될 때 장면이 자동으로 업데이트 될 수 있음을 의미합니다.
자동으로 업데이트되는 것을 원한다면 위의 설명과 같은 방식으로 특성을 사용해야합니까?
이 질문이 무엇을 목표로하는지 잘 모르겠습니다. 업데이트를 구현 한 방식에 만족하면 확실하게 사용할 수 있습니다. – ImportanceOfBeingErnest
나는 혼란스러워서 무엇을 물어볼 지 확신하지 못했습니다. 지금 편집되었습니다. 문제는 내가 특성을 사용해야한다는 것입니다. 이 문서에서, QT 애플리케이션에 mayavi를 임베드하는 방법은 먼저 'HasTraits'에 그것을 포함시킨 다음 QT에 임베드하는 것입니다. qt (또는 matplotlib 또는 다른 UI)에 직접 들어가는 것은 어떨까요? – Alex