Mayavi: Mayavi не поддерживает кортежи RGB как точечные данные

Созданный на 22 нояб. 2013  ·  9Комментарии  ·  Источник: enthought/mayavi

В чистом vtk могут быть поверхности, где point_data.scalars - это vtkUnsignedCharArray. Средство визуализации интерпретирует это как предоставление отдельного значения RGB или RGBA для каждой вершины и соответствующим образом раскрашивает поверхность, если настройки заданы. Объекты Mayavi вообще не позволяют вам делать это, потому что они никогда не настраивают vtkUnsignedCharArrays.

В конце концов, было бы неплохо иметь его, чтобы, если пользователь указывает допустимые кортежи RGB или RGBA в качестве скаляров для функций mlab, цвета в каждой точке соответствовали бы скалярам.

Самый полезный комментарий

Ни один из этих ответов сам по себе не дал того, что я хотел, но, наконец, я понял это, объединив их :)

# Imports
import numpy as np
from mayavi.mlab import quiver3d, draw

# Primitives
N = 200 # Number of points
ones = np.ones(N)
scalars = np.arange(N) # Key point: set an integer for each point

# Define color table (including alpha), which must be uint8 and [0,255]
colors = (np.random.random((N, 4))*255).astype(np.uint8)
colors[:,-1] = 255 # No transparency

# Define coordinates and points
x, y, z = colors[:,0], colors[:,1], colors[:,2] # Assign x, y, z values to match color
pts = quiver3d(x, y, z, ones, ones, ones, scalars=scalars, mode='sphere') # Create points
pts.glyph.color_mode = 'color_by_scalar' # Color by scalar

# Set look-up table and redraw
pts.module_manager.scalar_lut_manager.lut.table = colors
draw()

snapshot

Все 9 Комментарий

Основные разработчики Mayavi довольно заняты в другом месте. Боюсь, что за
этот запрос функции должен произойти, кто-то другой должен вмешаться
и код.

Все в порядке. Я задумал это как запрос функции на будущее, я знаю, что это значительный объем работы. Я бы постарался над этим поработать, если бы у меня было время.

Большое спасибо за понимание. Совершенно очевидно, что рабочая сила на
Маяви недостаточно, чтобы реализовать весь свой потенциал.

@GaelVaroquaux, скоро проект получит финансирование (начиная со второго квартала следующего года)!

Я бился головой об эту стену большую часть сегодняшнего дня - задание списка точек в виде массивов [x, y, z, размер, цвет] кажется такой очевидной особенностью! Зачем кому-то нужно, чтобы размер точек был привязан к цвету точек ?!

Ваш набор требований может быть таким же, как у других. Mayavi построен на
VTK, который был создан как общий набор инструментов визуализации для отображения
богатые постоянно меняющиеся данные. Он склонен рассматривать вещи как абстрактные
количества, которые должны быть сопоставлены визуальным свойствам объектов. Нравится это
или нет, мы в значительной степени связаны с этим.

Тем не менее, разделение размера и цвета легко возможно с небольшим
hack: Последний элемент в следующем абзаце
http://docs.enoughtt.com/mayavi/mayavi/mlab.html#adding -color-or-size-sizes

Спасибо за быстрый ответ. К сожалению, это серьезное ограничение с точки зрения способности Mayavi отображать научные данные (см., Например, эту ветку с цитатой: «Я также принял позу зародыша и начал плакать после того, как понял, что API не имеет четкого / стандартного способа отображения нестандартные цвета », что в точности передает мои ощущения!). Кажется, что эта функция возможна в VTK (например, this ), хотя ее может быть непросто перевести на Mayavi.

(Кстати, похоже, вы знакомы с тем, что я здесь пытаюсь сделать - я хочу использовать разные цвета для каждой популяции нейронов в трехмерной модели коры головного мозга.)

Привет, Клифф,

Для этого нет хорошего API, но есть несколько обходных путей.

Либо с помощью массива беззнаковых символов tvtk, как я изначально предлагал здесь

(видеть
http://stackoverflow.com/questions/19431099/how-to-directly-set-rgb-rgba-colors-in-mayavi,
сложно для определенных источников Mayavi)

Или настроив большую таблицу цветов, которая содержит все возможные значения RGB.

(см. ответ пользователя eqzx,
http://stackoverflow.com/questions/18537172/specify-absolute-colour-for-3d-points-in-mayavi?rq=3
)

15 мая 2015 г., пятница, 13:26, Клифф Керр [email protected]
написал:

Спасибо за быстрый ответ. К сожалению, это серьезное ограничение в
с точки зрения способности Mayavi отображать научные данные (см., например, эту ветку
http://stackoverflow.com/questions/18537172/specify-absolute-colour-for-3d-points-in-mayavi,
с цитатой "Я тоже приняла позу эмбриона и заплакала
после того, как я пойму, что API не имеет четкого / стандартного способа настройки
цвета », что в точности передает мои ощущения!).
возможно в ВТК (например, это
http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/ColoredPoints),
хотя может быть нелегко перевести на Mayavi.

-
Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/enoughtt/mayavi/issues/92#issuecomment -102463748.

Ни один из этих ответов сам по себе не дал того, что я хотел, но, наконец, я понял это, объединив их :)

# Imports
import numpy as np
from mayavi.mlab import quiver3d, draw

# Primitives
N = 200 # Number of points
ones = np.ones(N)
scalars = np.arange(N) # Key point: set an integer for each point

# Define color table (including alpha), which must be uint8 and [0,255]
colors = (np.random.random((N, 4))*255).astype(np.uint8)
colors[:,-1] = 255 # No transparency

# Define coordinates and points
x, y, z = colors[:,0], colors[:,1], colors[:,2] # Assign x, y, z values to match color
pts = quiver3d(x, y, z, ones, ones, ones, scalars=scalars, mode='sphere') # Create points
pts.glyph.color_mode = 'color_by_scalar' # Color by scalar

# Set look-up table and redraw
pts.module_manager.scalar_lut_manager.lut.table = colors
draw()

snapshot

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

rambalachandran picture rambalachandran  ·  9Комментарии

jan-janssen picture jan-janssen  ·  21Комментарии

dnacombo picture dnacombo  ·  7Комментарии

GaelVaroquaux picture GaelVaroquaux  ·  13Комментарии

anntzer picture anntzer  ·  7Комментарии