R ggplot2两级镶嵌面包裹
我想用facet_wrap编辑ggplot图形的facet标签,如下所示:R ggplot2两级镶嵌面包裹,r,ggplot2,label,facet,facet-wrap,R,Ggplot2,Label,Facet,Facet Wrap,我想用facet_wrap编辑ggplot图形的facet标签,如下所示: 我只想把ALPHA和BETA标签写在最上面一行 我只想在左边写第一、第二和第三行,每行只写一次 这样的事情可能发生吗 或者,我尝试使用grid arrange,但是“纯”ggplot图看起来更好,代码更易于操作(每行的复制和粘贴更少)。此外,我还遇到了网格排列的行高问题(一些图被上帝切断) 例如: Anames <- list( '1'="FIRST", '2'="SECOND", '3'="THIRD
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")
Anames您可以使用facet\u grid
执行此操作<代码>开关
设置为“y”以在左侧打印标签
ggplot(data=tdat, aes(x=time,y=value)) +
geom_bar(stat="identity")+
facet_grid(variable ~ B,
labeller=plot_labeller,
scales="free_y",
switch = "y")
为了比较两种类型的变量,通常更容易使用
facet\u grid
:
ggplot(data=tdat, aes(x=time,y=value)) +
geom_bar(stat="identity")+
facet_grid(rows = vars(variable), cols = vars(B),
labeller = plot_labeller, scales="free_y", switch = 'y')