我想使用facet_wrap编辑ggplot图形的构面标签,如下所示:
我只想在第一行写ALPHA和BETA标签。
我只想在左侧写FIRST,SECOND和THIRD,每行只写一次。
这样的事情有可能吗?
或者,我尝试使用网格排列,但是“纯” 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")