Раскраска отдельных патчей в Mayavi - PullRequest
1 голос
/ 29 марта 2019

Я могу сделать это с помощью matplotlib Я хочу построить тор и изменить цвет поверхности, основываясь на параметре малого угла.В более общем смысле, как вы окрашиваете отдельные участки при построении поверхности с помощью Mayavi?

Я могу сделать это легко в matplotlib, используя параметр 'facecolors' при построении графика, но, поскольку мне требуется более качественный 3D-рендеринг, я должениспользуйте Mayavi.

Более того, вот как вы можете раскрасить отдельные точки в Mayavi: Построение трехмерных точек с разными цветами в Mayavi (Python) Но я не нашел ничего похожего на работу дляповерхности.

Из документации цвет по умолчанию задан высотой z, но я не уверен, как можно изменить это значение, указав его для некоторого массива, который я могу передать функции построения графиков.

Есть ли способ изменить эту зависимость?

'' '

from mayavi import mlab
import numpy as np

mlab.options.offscreen = True

R = 2
r = 1

theta = np.linspace(0, 2 * np.pi, 20)
phi = np.linspace(0, 2 * np.pi, 20)
torus = np.zeros((3,20,20))

for i in range(0,20):
    for j in range(0,20):
        torus[0][i][j] = (R + r * np.cos(phi[j])) * np.cos(theta[i])
        torus[1][i][j] = (R + r * np.cos(phi[j])) * np.sin(theta[i])
        torus[2][i][j] = r * np.sin(phi[j])


mlab.mesh(torus[0], torus[1], torus[2])
mlab.show()

' ''

Я хочу, чтобы результат выглядел следующим образом:

torus

...