ggvis vs. ggplot2 + Shiny; какой выбрать для интерактивной визуализации?

10

В CrossValidated есть похожий вопрос, и я прочитал ответы. Мой вопрос немного другой. Я не хочу просто визуализировать свои данные, и на самом деле то, что я хочу визуализировать, нелегко визуализировать с помощью любого пакета.

У меня есть два набора точек ( координаты ) на моем графике. Я хочу добавить ребра и сделать их похожими на график. Если у меня есть точек, то в зависимости от характера моей проблемы мне нужно добавить ребер к графику.Икс,YN(N/2)2

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

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

Наконец, я сузил пакеты до ggvisи ggplot2. ggvisявляется новым и свежим в дополнение к намеренному дизайну для создания интерактивных сюжетов. Но я узнал, что ggplot2+Shinyможно также создавать интерактивные сюжеты. (Это правильно?) Кроме того, я подумал, что ggplot2возможности более разнообразны и более развиты, чем ggvis: например, ggplot2есть функция масштабирования, а ggvisу нее ее нет. Что более важно, так как ggvisон растет и меняется, я не хочу тратить много времени на работу, которая технически устареет или станет глючной через год или около того. Я думал, что это тот случай, если я на основе кода ggvis.

Теперь, пожалуйста, оцените мой выбор ( ggplot2+shiny) и посоветуйте мне возможность сделать то, что я хочу с ним сделать.

Поскольку я не знал ни одного из упомянутых пакетов, я начал учиться ggplot2из книги Уикхема, и мне это нравится! Но я боюсь провести несколько недель и выяснить, что этот удивительный пакет не может делать то, что я хочу сделать, даже с помощью Shiny.

PS: я хочу поместить окончательный код на github, чтобы вероятные пользователи могли его скачать и запустить. Поэтому мне не нужно делать веб-приложение, нет необходимости ни в каком веб-сайте или выкладывать интерактивную карту в онлайн. Мне просто нужно иметь интерактивный сюжет, который можно запустить изнутри Rstudio.

Шахин
источник
Добро пожаловать на сайт! Вы пробовали igraphили D3?
Dawny33
Спасибо! Я рассмотрел, что может сделать для меня igraph, и не нашел, чтобы это соответствовало имеющимся у меня данным. Насколько я понял, igraph визуализирует сеть на основе данных связанных вершин (или аналогичных данных о ребрах). Основываясь на некоторых алгоритмах и приоритетах, igraph находит вершины на графике, совместимые с данными. Но я хочу, чтобы вершины были точно в соответствующих координатах, которые есть в моем наборе данных. Я не хочу, чтобы пакет выбирал их расположение и расположение.
Шахин
Почему не d3js.org ? Похоже, у вас есть особые требования. D3 делает работу с SVG чрезвычайно простой.
Рикардо Круз,
Вы пробовали Gephi?
ММ
Не могли бы вы предоставить ссылку на вопрос CrossVal.
Джим

Ответы:

4

Ну, много месяцев прошло с этого запроса о помощи. Я пишу этот ответ на свой запрос, чтобы поделиться своим опытом. Я узнал ggplot2и тогда, и ggvisтак же Shiny. Shinyможет работать с ними обоими, но я нашел ggvisболее структурированным и ясным по сравнению с ggplot2. Нечто ожидаемое, поскольку первое разрабатывается на основе опыта разработки второго. Более того, ggvisкажется гораздо быстрее, чем ggplot2при быстрой генерации графиков / диаграмм, кажется, что он более подходит для Shiny и создания апплета. Однако отрицательным моментом является отсутствие многих функций, ggvisпоскольку пакет находится в стадии разработки и еще не достиг зрелости.

И большое спасибо за комментарии здесь. Я проверил Gephi, это не поможет. Я создал свой апплет, который работает очень хорошо, однако, наконец, дошел до того, что мне нужно использовать более мощные инструменты, такие как d3js, как уже предлагалось.

Шахин
источник
0

Время летит! После 2 лет опыта работы, теперь я отвечаю на свой вопрос с лучшим пониманием Shiny, R и интерактивной визуализации.

Plotly - безусловно лучший ответ. Его можно легко использовать с помощью преобразования ggplotly () статических графиков ggplot2 или непосредственно путем изучения логики, лежащей в основе функций Plotly.

Последний случай предлагается для приложений с различными участками.

Шахин
источник