Пузырьковая диаграмма без оси с метками в R - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть следующий фрейм данных:

> dput(df)
structure(list(text = structure(c(9L, 10L, 1L, 7L, 5L, 12L, 1L, 
11L, 5L, 8L, 2L, 13L, 2L, 5L, NA, 6L, 13L, 4L, NA, 5L, 4L, 3L
), .Label = c("add ", "change ", "clarify", "correct", "correct ", 
"delete", "embed", "follow", "name ", "remove", "remove ", "specifiy ", 
"update"), class = "factor"), ID = c(1052330L, 915045L, 931207L, 
 572099L, 926845L, 510057L, 927946L, 490640L, 928498L, 893872L, 
 956074L, 627059L, 508649L, 508657L, 1009304L, 493138L, 955579L, 
 144052L, 1011166L, 151059L, 930992L, 913074L)), .Names = c("text", 
 "ID"), class = "data.frame", row.names = c(NA, -22L))

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

> library(packcircles)
> library(ggplot2)
> packing <- circleProgressiveLayout(df)
> dat.gg <- circleLayoutVertices(packing)
> ggplot(data = dat.gg) +geom_polygon(aes(x, y, group = id, fill =  factor(id)), colour = "black",show.legend = FALSE) +scale_y_reverse() +coord_equal()

1 Ответ

0 голосов
/ 07 ноября 2018

Вы создаете data.frame для своих ярлыков с соответствующими координатами x и y и используете geom_text

library(ggplot2)
packing <- circleProgressiveLayout(df)
dat.gg <- circleLayoutVertices(packing)
cbind(df, packing) -> new_df
ggplot(data = dat.gg) +geom_polygon(aes(x, y, group = id, fill =  factor(id)), colour = "black",show.legend = FALSE) +
  scale_y_reverse() +coord_equal() +geom_text(data = new_df, aes(x, y,label = text))

enter image description here

Для Text и ID вы можете сделать:

new_df$text2 <- paste0(new_df$text,"\n",new_df$ID)
ggplot(data = dat.gg) +geom_polygon(aes(x, y, group = id, fill =  factor(id)), colour = "black",show.legend = FALSE) +
  scale_y_reverse() +coord_equal() +geom_text(data = new_df, aes(x, y,label = text2))

enter image description here

...