Как указать цвета в квадрантах рассеяния? - PullRequest
0 голосов
/ 28 марта 2019

Я хочу создать диаграмму рассеяния в R, которая имеет точки, которые разбиты на четыре квадранта, а затем применяет цвет к каждому квадранту на основе группы.

Я использовал следующий код, который работает, но нужно изменить цвета.

x_mid <- mean(c(max(iris$Petal.Length, na.rm = TRUE), 
                min(iris$Petal.Length, na.rm = TRUE)))

y_mid <- mean(c(max(iris$Petal.Width, na.rm = TRUE), 
                min(iris$Petal.Width, na.rm = TRUE)))
library(dplyr)
library(ggplot2)

iris %>% 
  mutate(quadrant = case_when(Petal.Length > x_mid & Petal.Width > y_mid   ~ "Q1",
                              Petal.Length <= x_mid & Petal.Width > y_mid  ~ "Q2",
                              Petal.Length <= x_mid & Petal.Width <= y_mid ~ "Q3",
                              TRUE                                         ~ "Q4")) %>% 
  ggplot(aes(x = Petal.Length, y = Petal.Width, color = quadrant)) +
  geom_vline(xintercept = x_mid) + # plot vertical line
  geom_hline(yintercept = y_mid) + # plot horizontal line
  geom_point()

1 Ответ

2 голосов
/ 28 марта 2019

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

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

Таким образом, вы можете добавить в конце:

scale_color_manual(values = c('orange', 'yellow', 'black', 'grey'))

Вы хотите сопоставить определенный цвет сНа каждом возможном уровне вы можете дать ему именованный вектор:

  scale_color_manual(values = c(Q4 = 'orange', Q2 = 'yellow', Q1 = 'black', Q3 = 'grey'))
...