Альтернатива Matplotlib для трехмерных точечных диаграмм

Мне трудно использовать Matplotlib для визуализации результатов перепроецирования моих данных в 3 измерениях после применения анализа основных компонентов или линейного дискриминантного анализа. После создания точечной диаграммы я не могу вращать данные или менять точку зрения при легком масштабировании (ось вращения остается неизменной даже после масштабирования, и если вы увеличиваете слишком большое количество точек, они просто исчезают), и каждое изменение занимает одну секунду. Matplotlib очень полезен, но для этого конкретного случая использования он начинает сильно разочаровывать, поскольку, вероятно, он не предназначен для таких задач. Есть ли альтернатива Matplotlib в Python, которая может лучше обрабатывать 3D-графики рассеяния и где можно было бы плавно перемещаться по облаку?

Пример показан на следующем рисунке. Я нарисовал сферы вокруг каждого кластера данных, соответствующего определенному классу, и закрасил перекрывающиеся сферы красным цветом. Теперь я хочу увидеть, как эти сферы пересекаются. Я думаю, что самая большая проблема с Matplotlib заключается в том, что он не позволяет перемещать весь график с помощью мыши, он позволяет вращать только вокруг фиксированной точки, что делает вещи очень беспорядочными, когда вы немного увеличиваете масштаб.

введите описание изображения здесь


person Mehdi    schedule 28.07.2015    source источник
comment
Не уверен, в чем конкретно заключается ваша проблема без кода, но вы смотрели здесь: pythonprogramming.net/matplotlib- Учебное пособие по 3D-диаграмме рассеяния   -  person jfish003    schedule 28.07.2015
comment
как я только что сказал, Matplotlib не позволяет красиво поворачивать и масштабировать облако. И это чертовски тормозит, когда вы рисуете несколько тысяч точек.   -  person Mehdi    schedule 28.07.2015
comment
Вы можете использовать треугольный график, чтобы показать различные проекции из K-мерного пространства в 2D (github.com/dfm /треугольник.py)   -  person Daniel Lenz    schedule 28.07.2015
comment
@Nihl Большое спасибо, Mayavi - это именно то, что мне нужно :), вы можете изменить это на ответ.   -  person Mehdi    schedule 28.07.2015


Ответы (3)


matplotlib не совсем подходит для 3D-графики: http://matplotlib.org/mpl_toolkits/mplot3d/faq.html

mplot3d был предназначен для того, чтобы пользователи могли создавать простые 3D-графики с тем же «внешним видом», что и 2D-графики matplotlib. Кроме того, пользователи могут использовать тот же инструментарий, с которым они уже знакомы, для создания как 2D-, так и 3D-графиков.

Я не думаю, что простая навигация в 3D-графике легко выполнима (даже 3D-масштабирование невозможно без настройки библиотеки). Изначально mplot3d не задумывался как полноценная библиотека 3D-графики, а скорее как приятное дополнение для людей, которым нужно базовое 3D и которые знакомы со структурой 2D-графика matplotlib.

Возможно, вы захотите взглянуть на MayaVI (что довольно хорошо):

MayaVi2 — очень мощная и многофункциональная библиотека для построения трехмерных графиков. Для расширенных 3D-сцен и отличных возможностей рендеринга настоятельно рекомендуется использовать MayaVi2.

Обратите внимание, что, в отличие от matplotlib, MayaVI еще не совместим с Python3 (и может быть несовместим в обозримом будущем), поэтому вам потребуется установка Python2.

person Nihl    schedule 28.07.2015

Очень хорошей альтернативой, но не Python, является трехмерный график от ILNumerics (http://ilnumerics.net/). . Это в .NET

person Max    schedule 25.08.2015

Matplotlib хорошо работает для 3D, но не слишком быстро, когда требуется интерактивность:

https://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html

Mayavi действительно быстр и совместим с Python 3:

https://docs.enthought.com/mayavi/mayavi/mlab.html#id1

person Tony Power    schedule 09.03.2020