#r #ggplot2 #dplyr #tidyverse
#r #ggplot2 #dplyr #tidyverse
Вопрос:
Я создаю несколько графиков, на которых для одного и того же ряда данных я создаю, например, линейный график и ленточный график. Затем я вручную назначаю метки, чтобы легенда выглядела красиво. Есть ли способ избежать многократного ввода меток, как показано ниже, а просто сделать это один раз и применить его ко всем масштабам?
library(tidyverse)
starwars %>%
ggplot(aes(x=mass, y=height, color=gender, fill=gender))
geom_line()
geom_point()
scale_color_brewer(labels=c("Female", "Male"))
scale_fill_brewer(labels=c("Female", "Male"))
Заранее спасибо!
Комментарии:
1. Измените данные так, чтобы значения
gender
столбца были женскими и мужскими
Ответ №1:
library(tidyverse)
starwars %>% filter(mass > 1000)
mutate(gender = case_when(
gender == "masculine" ~ "Male",
gender == "feminine" ~ "Female",
TRUE ~ "Other")) %>%
ggplot(aes(x=mass, y=height, color=gender, group = gender, fill=gender))
geom_line()
geom_point()
scale_x_log10() # Because Jabba is an absolute unit
Ответ №2:
Или создайте именованный вектор. Недостаток в том, чтобы сохранить «другое» как NA (хотя в противном случае в этом случае есть только NA).
Я не масштабировал для Jabba.
library(tidyverse)
mylabels <- c(feminine = "Female", masculine = "Male")
starwars %>%
ggplot(aes(x=mass, y=height, color=gender, fill=gender))
geom_line()
geom_point()
scale_color_brewer(labels=mylabels)
scale_fill_brewer(labels=mylabels)
#> Warning: Removed 29 row(s) containing missing values (geom_path).
#> Warning: Removed 29 rows containing missing values (geom_point).
Создано 2021-02-09 пакетом reprex (версия 0.3.0)