Проблемы с изменением меток с помощью facet_grid

#r #ggplot2

#r #ggplot2

Вопрос:

Я действительно борюсь с чем-то, что должно быть простым, чтобы изменить метки на моем графике facet_grid, но это не работает. Это график убийств одного вида животных в зависимости от количества туристов в районе за три периода:

введите описание изображения здесь

Мне нужно изменить метки «1», «2» и «3» справа на графике, и я подумал, что этот скрипт должен это сделать:

 library(ggplot2)
new_labels <- c("1" = "cat.1", "2" = "cat.2", "3" = "cat.3")
ggplot(pe_ki, aes(people,kills))  
  geom_point()  
  theme_bw()  
  facet_grid(class~category, labeller = labeller(category = new_labels))  
  facet_grid(rows=vars(period))  
  stat_smooth(method="glm", method.args = list(family = "poisson"),col="black")  
  theme(strip.background = element_rect(fill="lightblue", size=1, color="darkblue"))
  

Данные:

 dput(pe_ki)
structure(list(period = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), month = c("JAN", 
"FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", 
"NOV", "DEC", "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", 
"AUG", "SEP", "OCT", "NOV", "DEC", "JAN", "FEB", "MAR", "APR", 
"MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"), people = c(4068L, 
7251L, 14384L, 20513L, 18748L, 17760L, 23433L, 22878L, 12815L, 
8101L, 7477L, 5018L, 5063L, 11103L, 20946L, 32192L, 22665L, 29605L, 
37590L, 36692L, 16474L, 8989L, 5729L, 3909L, 8391L, 18638L, 31223L, 
40583L, 26889L, 40074L, 53218L, 52087L, 23873L, 13694L, 9354L, 
9822L), kills = c(2L, 1L, 3L, 5L, 3L, 0L, 4L, 5L, 1L, 1L, 0L, 
1L, 0L, 2L, 1L, 1L, 4L, 1L, 3L, 4L, 0L, 0L, 0L, 1L, 0L, 0L, 2L, 
6L, 1L, 2L, 2L, 3L, 1L, 0L, 0L, 0L)), class = "data.frame", row.names = c(NA, 
-36L))
  

Ответ №1:

Попробуйте этот подход. Это может быть способом взлома графика, определения новых меток с использованием mutate() и форматирования как фактора на основе желаемых меток. Здесь код:

 library(dplyr)
library(ggplot2)
#Code
new_labels <- c("cat.1","cat.2","cat.3")
#Plot
pe_ki %>%
  mutate(period=factor(period,levels = unique(period),
                       labels = new_labels,ordered = T)) %>%
  ggplot(aes(people,kills))  
  geom_point()  
  theme_bw()  
  facet_grid(class~category)  
  facet_grid(rows=vars(period))  
  stat_smooth(method="glm", method.args = list(family = "poisson"),col="black")  
  theme(strip.background = element_rect(fill="lightblue", size=1, color="darkblue"))
  

Вывод:

введите описание изображения здесь

Или, если проблема заключается только в добавлении суффикса cat. :

 #Plot 2
pe_ki %>%
  mutate(period=paste0('cat.',period)) %>%
  ggplot(aes(people,kills))  
  geom_point()  
  theme_bw()  
  facet_grid(class~category)  
  facet_grid(rows=vars(period))  
  stat_smooth(method="glm", method.args = list(family = "poisson"),col="black")  
  theme(strip.background = element_rect(fill="lightblue", size=1, color="darkblue"))
  

Вывод:

введите описание изображения здесь