Как определить уровни цвета в этой визуализации кросс-таблицы с помощью ggplot? - PullRequest
2 голосов
/ 04 апреля 2020

Я пытаюсь создать диапазон цветов, отражающих степень интенсивности в моем графике кросс-таблицы. Например, значениям 0-33 назначается светло-зеленый, 34-66 назначаются стандартный зеленый, а 67-100 - зеленый лес. Мне удалось выяснить, как сделать все точки одного цвета. Есть ли команда для этого?

#Load ggplot2
library(ggplot2)                           

#Specify foods and countries                         
foods <- c("popcorn", "carrots", "licorice", "eggs", "noodles", "walnuts")
nations <- c("Portgual", "Macedonia", "Germany", "France", "Denmark", "Belgium")

#Create the data frame
crosstab <- expand.grid(foods, nations)
crosstab$value <- c(12.2, 5.4, 11.1, 33.1, 19.7, 6.5, 22.2, 21.1, 58.7, 91.4, 38.4, 14.0, 23.5, 34.2, 43.1, 51.5, 16.7, 19.1, 11.1, 28.9, 26.1, 14.1, 13.0, 41.2, 56.2, 32.1, 48.9, 47.3, 17.1, 46.5, 21.2,
              51.1, 62.1, 14.8, 53.5, 11.8)    

#Plot the visualization
final_plot <- ggplot(crosstab, aes(Var1, Var2)) + geom_point(aes(size = value), colour = "lavender") + theme_bw() + xlab("") + ylab("")

#Add design elements
final_plot + scale_size_continuous(range = c(10, 25)) + geom_text(aes(label = value)) +
  theme(legend.position = "none") +
  theme(axis.text.x = element_text(size = 10)) +
  theme(axis.text.y = element_text(size = 10)) +
  theme(axis.ticks = element_blank()) +
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
          panel.background = element_blank())

enter image description here

1 Ответ

1 голос
/ 04 апреля 2020

Вы можете создавать различные группы на основе их значения с помощью функции cut и передавать эту новую переменную в качестве аргумента color в ваш aes. Затем, используя scale_color_manual, вы можете установить соответствующие цвета:

library(dplyr)
library(ggplot2)

crosstab %>% mutate(CutColor = cut(value, breaks = c(0,33,66,100))) %>%
  ggplot(aes(x = Var1, y = Var2))+
  geom_point(aes(size = value, color = CutColor))+
  geom_text(aes(label = value)) +
  scale_size_continuous(range = c(10, 25)) +
  scale_color_manual(values = c("lightgreen","green","forestgreen"))+
  theme(legend.position = "none",
        axis.text.x = element_text(size = 10),
        axis.text.y = element_text(size = 10),
        axis.ticks = element_blank(),
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        panel.background = element_blank())

enter image description here

Это отвечает на ваш вопрос?

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