R ggplot2 两级小平面换行
R ggplot2 two-level facet wrap
我想使用 facet_wrap 编辑 ggplot 图形的分面标签,如下所示:
我想只在第一行写 ALPHA 和 BETA 标签。
我想只在左侧写 FIRST、SECOND 和 THIRD,并且每行只写一次。
这样的事情可能吗?
或者,我尝试使用网格 ar运行ge,但 "pure" 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")
您可以使用 facet_grid
来执行此操作。 switch
设置为 "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_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')
我想使用 facet_wrap 编辑 ggplot 图形的分面标签,如下所示:
我想只在第一行写 ALPHA 和 BETA 标签。
我想只在左侧写 FIRST、SECOND 和 THIRD,并且每行只写一次。
这样的事情可能吗?
或者,我尝试使用网格 ar运行ge,但 "pure" 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")
您可以使用 facet_grid
来执行此操作。 switch
设置为 "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_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')