С точки зрения производительности, следующий фрагмент кода отлично подходит для меня при построении графика в mayavi
.10,000+ Точечные диаграммы с точками 3D в Python (с быстрой рендерингом)
import numpy as np
from mayavi import mlab
n = 5000
x = np.random.rand(n)
y = np.random.rand(n)
z = np.random.rand(n)
s = np.sin(x)**2 + np.cos(y)
mlab.points3d(x, y, z, s, colormap="RdYlBu", scale_factor=0.02, scale_mode='none')
Но mayavi
начинает задыхаться раз . Аналогичная процедура 3D-графика в matplotlib
, (Axes3D.scatter
) аналогично борется с наборами данных такого размера (почему я начал сначала искать в mayavi
).
Во-первых, есть что-то в mayavi
(тривиальное или нетривиальное), которое мне не хватает, что сделало бы 10 000+ пунктов разброса разброса намного проще для рендеринга?
Во-вторых, если ответ выше, нет, какие другие варианты (либо в mayavi
, либо в другом пакете python) мне нужно отображать наборы данных этой величины?
Я отметил, что ParaView просто добавляет, что рендеринг моих данных в ParaView идет гладко, что заставляет меня поверить, что я не пытаюсь сделать что-то необоснованное.
Update:
Указание режима в качестве 2D-символа проходит долгий путь к проносящихся вещи вверх. Например.
mlab.points3d(x, y, z, s, colormap="RdYlBu", scale_factor=0.02,
scale_mode='none', mode='2dcross')
может легко поддерживать до 100000 точек
Было бы еще неплохо, если бы кто-нибудь мог бы добавить некоторую информацию о том, как ускорить рендеринг 3D глифов.
Спасибо за реанимацию этого вопроса! Хотя VisPy действительно представляет собой очень мощный пакет визуализации, на первый взгляд это API сложнее, чем я привык к пакетам python, и, похоже, он специально предназначен для динамического построения/рендеринга. Во всяком случае, я посмотрю, подходит ли оно моим целям в ближайшие дни, спасибо! – lanery