Поиск библиотеки/инструмента для визуализации многомерных данных

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

  • "Размер окна" для базовых данных, по которым рассчитываются итоговые статистики.
  • Несколько последовательных окон, используемых для вычисления одной сводной статистики (т.е. компромисс между большей пространственной или большей временной точностью)
  • "Минимальный возраст" - смещение в истории базовых данных.

Сводная статистика (которая генерирует результирующие последовательности поплавков для каждой конфигурации параметров) является нетривиальной, но будет независимо чувствительна ко всем трем параметрам.

Меня интересуют методы визуализации - подходят для RAD/ad-hoc-запроса, которые помогут мне экспериментировать с этими многомерными данными.

До сих пор я перебирал MatPlotLib, но обнаружил, что он ограничен, генерируя два графика из 2/3 измерений в стиле партии обработка делает исследование очень утомительным. В идеале я бы нашел инструмент, который позволил бы мне визуализировать более двух измерений... возможно, позволяя мне переключаться между измерениями в интерактивном графическом интерфейсе в реальном времени.

Мне бы очень понравились подсказки от любых гуру визуализации относительно подходящих инструментов, которые я должен исследовать - идеально для интеграции с моими существующими функциями Python или на других языках. Мне особенно хотелось услышать какие-то анекдоты успеха с похожими проблемами визуализации.

РЕДАКТИРОВАТЬ, чтобы добавить. Один из возможных подходов, который я рассматриваю, - использовать анимацию на двух или трехмерных графиках (чтобы захватить другое измерение... оставить 1 или 2 для ручного выбора)... хотя Я не нашел хороших инструментов, чтобы помочь мне достичь этого.

Ответ 1

RGL - это система устройств визуализации для R, использующая OpenGL в качестве рендеринга. Устройство rgl в своем ядре - это 3D-движок в реальном времени, написанный на С++. Он предоставляет интерактивную навигационную систему точки обзора (поддержка мыши + колесо) и интерфейс программирования R.

RGL Screenshot

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

GGobi Screenshot

Вот учебник, который охватывает обе указанные выше системы здесь.

RPy - очень простой, но надежный интерфейс Python для языка программирования R. Он может управлять всеми видами объектов R и может выполнять произвольные функции R (включая графические функции). Все ошибки из языка R преобразуются в исключения Python. Любой модуль, установленный для системы R, может использоваться из Python.

Ответ 2

Вы можете посмотреть вывод SVG с анимацией, и в этом случае этот вопрос может вас заинтересовать. Я подозреваю, что аспекты анимации потребуют много работы с вашей стороны. Другим вариантом может быть визуализация данных в виде графика, хотя я недостаточно знаю о ваших данных, чтобы знать, будет ли это полезно для вас. Если это так, cytoscape скрипт python

Ответ 3

Если все, что вам нужно, это анимированная поверхность, то gnuplot может это сделать. Быстрое введение на нем можно найти здесь или из gnuplot FAQ. Более подробно, очевидно, можно найти в документах gnuplot.

Ответ 4

Вы можете попробовать guiqwt. Он предназначен для 2D-графиков, но нацелен на более конкретные интерактивные сюжеты (в отличие от Matplotlib, хотя он может справиться и с некоторой степенью взаимодействия). Из документации guiqwt:

Обзор

На основе PyQwt (построение виджета для графических пользовательских интерфейсов PyQt4) и на научных модулях NumPy и SciPy, guiqwt - это Python библиотека, обеспечивающая эффективные функции 2D-построения данных (кривая/изображение визуализация и связанные с ними инструменты) для интерактивных вычислений и разработка приложений обработки сигналов/изображений.

<сильные > Представления

Самый популярный модуль Python для построения данных в настоящее время matplotlib, библиотека с открытым исходным кодом, предоставляющая множество типов сюжетов и API (интерфейс pylab), который очень близок к построению MATLABs интерфейс.

Функции графического отображения guiqwt довольно ограничены по типам сюжетов по сравнению с matplotlib. Однако используемые в настоящее время типы сюжетов намного эффективнее. Например, изображение guiqwt, показывающее function (guiqwt.pyplot.imshow()) не делают никакой копии отображаемые данные, что позволяет отображать изображения, которые намного больше чем с его коллегой matplotlib. Другими словами, при показе 30-мегабайтное изображение (например, 16-разрядные целые числа без знака) с guiqwt, no дополнительная память теряется, чтобы отобразить изображение (за исключением внеэкранное изображение, которое зависит от размера окна), тогда как matplotlib занимает более 600 МБ дополнительной памяти (оригинал массив дублируется четыре раза с использованием 64-битных типов данных с плавающей запятой).

(Я не пробовал, поэтому не могу комментировать эти утверждения.)

Ответ 5

Хорошо, теперь, когда я понимаю ваши данные, я могу определенно предложить метод визуализации. Цветной график 3D-плотности поверхности. Используйте a0, a1 и a2 в качестве стандартных осей x, y, z, используйте a3 как ось времени и нарисуйте разные цвета в монохроматическом диапазоне (или от холода до горячего). Таким образом, единственное, что требует интерактивный слайдер, - это a3.

Что касается инструментов для этого, то

  • Я не знаю, может ли gnuplot делать графики плотности цвета, если это может быть вашим лучшим выбором. Создайте набор gif в домене a3, используйте imagemagick для создания одного анимированного gif из них, а затем используйте анимированный редактор .gif, который позволяет перемещаться между кадрами
  • Опять же, с matplotlib, я не уверен, можно ли делать графики плотности цвета.
  • SVG может определенно сделать все, что вам нужно, включая аспекты анимации, но, как я уже говорил, будет много тяжелой работы.

Ответ 6

Похоже, Mayavi может соответствовать вашим потребностям. Он написан на Python, может использоваться в интерактивном режиме и поддерживает 3D-графики и анимации. Вы можете посмотреть этот учебник, чтобы узнать, соответствует ли он вашим потребностям.

Я сделал интерактивную трехмерную визуализацию с анимацией в Python, используя старую версию 1 майави, см. эту страницу.


Изменить

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

Пример 1

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

Пример 2

Вот еще один пример того, как может выглядеть более "обычный" сюжет с Mayavi: Пример преобразования Фурье. Это очень похоже на то, что делают многие другие библиотеки построения.

Ответ 7

Go скачать бесплатную пробную версию Tableau (www.tableausofware.com). Он будет кодировать ваши данные по X, Y, размеру, цвету и форме, и вы можете создавать небольшие кратные любые другие измерения, которые у вас есть - то есть вы можете смотреть на множество измерений одновременно. Вы можете очень быстро попробовать множество и множество визуализаций. Существует бесплатное обучение на веб-сайте компании.

Отказ от ответственности: я работаю для них.

Ответ 8

Простейшей визуализацией для 3 + измерений является диаграмма пузырьков или диаграмма движения. В верхней части оси x и y вы можете использовать размер пузырьков и цвет пузырька для дополнительных размеров.

Визуализация Google (http://code.google.com/apis/chart/interactive/docs/gallery/motionchart.html) и интерактивный режим электронной таблицы Google позволяют создать простой интерфейс, с каким из размеров оси/размера/цвета.

Он не предназначен для обработки слишком большого количества точек данных, но вы можете использовать его для легкого определения шаблонов на выборках данных.