Я бы хотел отредактировать метки фасетов графики ggplot с помощью facet_wrap следующим образом:
Я хотел бы написать метки ALPHA и BETA только в верхнем ряду.
Я хотел бы написать ПЕРВЫЙ, ВТОРОЙ и ТРЕТИЙ только на левой стороне и только один раз в строке.
Возможно ли такое?
В качестве альтернативы я пытался работать с сеткой, но «чистый» график ggplot выглядит лучше, а код легче манипулировать (меньше копий и вставок для каждой строки).Также я столкнулся с проблемами с высотой строки при помощи grid_arrange (некоторые сюжеты отключены).
Пример:
Anames <- list(
'1'="FIRST",
'2'="SECOND",
'3'="THIRD")
Bnames <- list(
'A'="ALPHA",
'B'="BETA")
plot_labeller <- function(variable,value){
# http://www.sthda.com/english/wiki/print.php?id=175
if (variable=='variable') {
return(Anames[value])
} else {
return(Bnames[value])
}
}
tdat <- data.frame("variable" = c(rep(seq(1,3),10)), # Group Factor 1
"B" = c(rep(seq(1,2),15)), # Group Factor 2
"time" = c(1:30),
"value" = sample(1:100,30))
tdat$B <- ifelse(tdat$B==1,"A","B")
library(ggplot2)
ggplot(data=tdat, aes(x=time,y=value)) +
geom_bar(stat="identity")+
facet_wrap(~variable+B,
labeller=plot_labeller,
ncol=2,scales="free_y")