Здесь немного другой способ сделать это путем изменения формы вашего фрейма данных с использованием функции pivot_longer
из пакета tidyr
:
library(dplyr)
library(tidyr)
library(ggplot2)
df %>% pivot_longer(.,-Location, names_to = "var",values_to = "val") %>%
filter(!is.na(val)) %>%
ggplot(aes(x = Location, y = val, group = var, color = var))+
geom_line()+
ylab("")+
facet_wrap(.~var, strip.position = "left", ncol = 1, scales = "free_y")+
theme(strip.background = element_blank(),
strip.placement = "outside")
РЕДАКТИРОВАТЬ: Изменение масштаба только фасета
Чтобы изменить масштаб только фасета B, чтобы значения y находились в диапазоне от 0 до 40, вы не можете использовать scale_y_continuous
, потому что это будет применяться на всех гранях.
Но то, что вы можете сделать, это добавить две точки в вашем фрейме данных со значениями 0 и 40 для группы B, чтобы заставить ggplot
строить график во всем диапазоне. Затем вы можете передать цвет этой части прозрачному, чтобы (визуально) удалить их из графика:
df %>% pivot_longer(.,-Location, names_to = "var",values_to = "val") %>%
filter(!is.na(val)) %>%
mutate(NewVar = var) %>%
add_row(., Location = c(1,1),
var = c("B","B"),
val = c(0,40),
NewVar = c("Out","Out")) %>%
ggplot(aes(x = Location, y = val, group = NewVar, color = NewVar))+
geom_line()+
ylab("")+
facet_wrap(.~var, strip.position = "left", ncol = 1, scales = "free_y")+
theme(strip.background = element_blank(),
strip.placement = "outside")+
scale_color_manual(values = c("red","green","blue","transparent"), breaks = c("A","B","C"))