2017-01-20 4 views
1

Mayavi에서 폭이나 반지름이 일정하지 않은 단일 선 (또는 관)을 플롯하려고합니다. 이 일이 일어날 수있을만큼 장면 뒤에서 무슨 일이 일어나고 있는지 이해하지 못할 수도 있지만 이것은 간단한 작업처럼 보입니다.Mayavi와 다중 반경이있는 단일 선

다음 코드는 내가 원하는 선을 만들고 색상으로 배율을 조정할 수 있습니다. 그러나, 나는 또한 너비를 기준으로 비율을 조정하고 싶습니다.

import mayavi.mlab as mlab 
import numpy as np 

x = range(100) 
y = range(100) 
z = range(100) 
s = np.random.uniform(0, 1, 100) 

mlab.plot3d(x, y, z, s, tube_radius=10) 

enter image description here

내가 그것을 만들 수 없습니다 나는대로 본질적으로 대신 색상의 반경 확장 이전 이미지를 것하지만 내가 원하는 출력의 이미지를하지 않아도 일부 지역 라인의 너비가 다른 지역보다 넓을 것입니다. 한 가지 가능한 해결책은 tube_radius 매개 변수를 사용하고 각 섹션을 개별적으로 플롯하는 것입니다. 그러나 실제로는 라인이 상당히 길어질 수 있고 여러 섹션이있을 수 있습니다. 표면의 부모가 모듈 관리자 (색상 등)이기 때문에 GUI에서

답변

1

, 당신은 당신이

import mayavi.mlab as mlab 
import numpy as np 

x = range(100) 
y = range(100) 
z = range(100) 
s = np.random.uniform(0, 1, 100) 

t = mlab.plot3d(x, y, z, s, tube_radius=10) 
t.parent.parent.filter.vary_radius = 'vary_radius_by_scalar' 

을 할 수있는 Tube 파이프 라인으로 이동하여 스크립트에서 Vary_radius = 'vary_radius_by_scalar'

을 사용할 수 있습니다 그 부모는 Tube 파이프 라인입니다

+0

내 질문에 대한 답변을 주셔서 감사합니다. 아마도이 사실을 지침으로 파악하지 못했을 것입니다. 색상과 반경을 별도로 확인할 수 있습니까? 예를 들어 튜브 반경을 하나의 벡터로 변경하고 색상을 다른 벡터로 변경하려면 어떻게해야합니까? – johnchase

+0

M .. 네가 할 수 있는지는 잘 모르겠지만 VTK 데이터에 여분의 '스칼라'를 추가 할 수 있을지는 모르겠다. 스크립트의 데이터는'PolyData' 클래스 인'vtk_data = t.parent.parent.parent.parent.data'로 접근 할 수 있습니다. 그런 다음 해당 클래스의 일부 메소드 ('add_array' 또는 유사)를 사용하여 데이터를 추가 할 수 있습니다. 다음은 'PolyData' 클래스에 데이터를 추가하는 방법에 대한 예제입니다. http://docs.enthought.com/mayavi/mayavi/auto/example_polydata.html –