R 在ggplot中从右向左排列面板
我有一个5组的数据框。 我想使用ggplot按组划分我的数据。我需要面板从右到左排序,而不是从左到右(默认)R 在ggplot中从右向左排列面板,r,ggplot2,facet,R,Ggplot2,Facet,我有一个5组的数据框。 我想使用ggplot按组划分我的数据。我需要面板从右到左排序,而不是从左到右(默认) df这里有一个解决方案有些粗糙,因为它需要手动定位。我们创建一个绘图函数,然后绘制第一行图(第1行到第3行的代码< df>代码>和第二行图(第4行和第5行 df>代码>)。我们使用网格将它们放在一起。安排< /代码>,但是我们在第二行的左端只添加y轴的空白图,创建空白。 手动调整宽度< /代码>参数是必要的,以使空白图占用正确的空间量,以便其他两个图垂直地与上面的图垂直排列。 libra
df这里有一个解决方案有些粗糙,因为它需要手动定位。我们创建一个绘图函数,然后绘制第一行图(第1行到第3行的代码< df>代码>和第二行图(第4行和第5行<代码> df>代码>)。我们使用<代码>网格将它们放在一起。安排< /代码>,但是我们在第二行的左端只添加y轴的空白图,创建空白。
手动调整<代码>宽度< /代码>参数是必要的,以使空白图占用正确的空间量,以便其他两个图垂直地与上面的图垂直排列。
library(gridExtra)
library(grid)
pf = function(data, xrng=range(df$x), yrng=range(df$y)) {
ggplot(data, aes(x,y)) +
geom_point(size=3) +
facet_wrap(~ factor(group, rev(group))) +
scale_y_continuous(limits=yrng) +
scale_x_continuous(limits=xrng)
}
grid.arrange(pf(df[1:3,]),
arrangeGrob(pf(data.frame(x=-10,y=-10, group="x")) +
theme(panel.border=element_blank(),
panel.background=element_blank(),
strip.background=element_rect(colour=NA, fill=NA),
strip.text=element_text(colour=NA),
axis.text.x=element_text(colour=NA),
axis.title.x=element_text(colour=NA),
axis.ticks.x=element_blank(),
axis.title.y=element_text(angle=90, vjust=0.5),
axis.text.y=element_text(angle=0),
axis.ticks.y=element_line()),
pf(df[4:5,]) + theme(axis.text.y=element_blank(),
axis.title.y=element_blank(),
axis.ticks.y=element_blank()) ,
widths=c(1.12,2)),
ncol=1)
您希望在左下角有一个空的绘图面板,还是只有一个空格?我需要一个只有一个空格的绘图面板。与现在显示的完全一样,但从右到左。关于这个问题的方法,有一些答案。例如,。这里提出的解决方案似乎不适用于新版本的ggplot。因为有一个“dir”参数v或h值,tt应该是左右或左右的简单参数…添加df$group=因子(df$group,LEVES=rev(df$group)),如前所述(删除的注释)。因此,该组将以相反的方式显示。另外,是否可以对齐两条线的y轴?您的意思是要将y轴记号和标签从绘图的底部一行移到左侧,使其直接位于绘图的顶部一行的y轴记号和标签的下方?完全正确。这将完美地回答我的问题
library(gridExtra)
library(grid)
pf = function(data, xrng=range(df$x), yrng=range(df$y)) {
ggplot(data, aes(x,y)) +
geom_point(size=3) +
facet_wrap(~ factor(group, rev(group))) +
scale_y_continuous(limits=yrng) +
scale_x_continuous(limits=xrng)
}
grid.arrange(pf(df[1:3,]),
arrangeGrob(pf(data.frame(x=-10,y=-10, group="x")) +
theme(panel.border=element_blank(),
panel.background=element_blank(),
strip.background=element_rect(colour=NA, fill=NA),
strip.text=element_text(colour=NA),
axis.text.x=element_text(colour=NA),
axis.title.x=element_text(colour=NA),
axis.ticks.x=element_blank(),
axis.title.y=element_text(angle=90, vjust=0.5),
axis.text.y=element_text(angle=0),
axis.ticks.y=element_line()),
pf(df[4:5,]) + theme(axis.text.y=element_blank(),
axis.title.y=element_blank(),
axis.ticks.y=element_blank()) ,
widths=c(1.12,2)),
ncol=1)