Создайте пузырьковую диаграмму для числа вхождений объектов с помощью R - PullRequest
0 голосов
/ 04 июня 2018

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

Например, вот так, только со сплошной окраской и размером относительно числа вхождений enter image description here

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

Могу ли я добиться этого, используя какую-то форму ggplot, не пытаясь самостоятельно расставить точки?

Кто-нибудь знает о лучшем пакете R для этого?Я не знаю точно, что искать, для такого рода визуализации я не являюсь носителем английского языка, поэтому подсказки в этом направлении также приветствуются.

РЕДАКТИРОВАТЬ: пустой граф пакета igraph создает перекрывающиеся вершины

enter image description here

1 Ответ

0 голосов
/ 04 июня 2018

Один из способов сделать это - использовать пакет igraph для построения графика без ссылок, соединяющих узлы.Макет по умолчанию не позволит им столкнуться друг с другом.Поскольку вы не предоставили данные, я использую произвольные размеры и метки.

library(igraph)
g = make_empty_graph(26)

## Arbitrary Labels
V(g)$label = LETTERS

## Arbitrary sizes
V(g)$size  = sample(20:40, 26, replace=TRUE)

plot(g, vertex.color="lightgreen")

Bubbles

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

Добавление

Макет по умолчанию для этого графа - Fruchterman-Reingold (layout_with_fr), но есть и другие макеты, которые должен отделить отключенные узлы.Два других, которые работали для меня, это алгоритм graphopt (layout_with_graphopt) и Davidson и Harel (layout_with_dh), который размещает узлы в прямоугольном массиве.

LO_GO = layout_with_go(g)
plot(g, vertex.color="lightgreen", layout = LO_GO)

LO_DH = layout_with_dh(g)
plot(g, vertex.color="lightgreen", layout = LO_DH)
...