Как я могу создать пузырьковые сетки в ggplot? - PullRequest
0 голосов
/ 03 ноября 2019

Я хочу создать пузырьковые сетки с помощью ggplot. что-то вроде этого: enter image description here

Я не могу найти какой-либо код или экзамен в Интернете.

Спасибо

Ответы [ 2 ]

1 голос
/ 03 ноября 2019

Использование geom_point с дискретными шкалами x и y поможет вам начать. Вот пример с некоторыми быстрыми игрушечными данными:

library(tidyverse)

offenses <- c("robbery", "violence", "drugs")
actions <- c("formal", "informal", "considered")
counts <- sample(10:100, 9, replace = TRUE)

data <- expand.grid(offenses = offenses, actions = actions) %>% bind_cols(counts = counts)

ggplot(data,
       aes(x = str_to_title(offenses), 
           y = str_to_title(actions),
           colour = str_to_title(offenses),
           size = counts)) +
  geom_point() +
  geom_text(aes(label = counts), 
            colour = "white", 
            size = 3) +
  scale_x_discrete(position = "top") +
  scale_size_continuous(range = c(10, 30)) + # Adjust as required.
  scale_color_brewer(palette = "Set2") +
  labs(x = NULL, y = NULL) +
  theme(legend.position = "none",
        panel.background = element_blank(),
        panel.grid = element_blank(),
        axis.ticks = element_blank())

bubbles

Поиграйте с параметром range scale_size_continouous по мере необходимости, чтобы получить пузыриразумного размера для вашего набора данных.

0 голосов
/ 03 ноября 2019

О, я тоже пробовал между тем. Выглядит очень похоже ...

require(ggplot2)
require(ggsci) # for the scale_fill_npg()

grid.bubble.plot <- function(df, 
                             axis_labels_size=16, 
                             aspect_ratio=1/1,
                             values_text_size=3,
                             values_text_color="white",
                             x_axis_position="top", # or "bottom",
                             bubble_size_range=c(5, 24),
                             bubble_alpha=0.5,
                             bubble_shape=21,
                             bubble_edge_stroke=0) {
    col_names <- colnames(df)
    row_names <- rownames(df)
    values <- as.vector(as.matrix(df))
    values_x <- as.vector(sapply(col_names, function(i) rep(i, nrow(df))))
    values_y <- as.vector(rep(row_names, dim(df)[2]))
    res_df <- data.frame(values = values, values_x = values_x, values_y)
    gg <- ggplot(res_df, aes(x=values_x, y=values_y, size = values, fill=factor(values_x))) +
                 geom_point(alpha=bubble_alpha, shape=bubble_shape, stroke=bubble_edge_stroke) +
                 scale_size(range = bubble_size_range) +
                 scale_fill_npg() +
                 scale_x_discrete(position = x_axis_position) +
                 geom_text(aes(label=values), size=values_text_size, color=values_text_color) +
                 theme(line=element_blank(), 
                       panel.background=element_blank(),
                       legend.position="none",
                       axis.title=element_blank(),
                       axis.text=element_text(size=axis_labels_size),
                       aspect.ratio=aspect_ratio)
    gg
}

grid.bubble.plot(df)

Поиграйтесь со значениями.

например, вы также можете изменить размер текста в зависимости от значений:

grid.bubble.plot(df, values_text_size=as.vector(as.matrix(df)))

Для цвета вы можете попробовать другие варианты scale_fill_, такие как: _aaas() _lancet() _jco() _tron()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...