我正在使用ggplot并且有两个图表,我希望彼此叠加显示.我使用grid.arrangegridExtra来堆叠它们.问题是,无论轴标签如何,我都希望图形的左边缘与右边缘对齐.(问题出现是因为一个图的标签很短而另一个图很长).
问题:
我该怎么做?我没有和grid.arrange结婚,但ggplot2是必须的.
我尝试了什么:
我尝试使用宽度和高度以及ncol和nrow来制作2 x 2网格并将视觉效果放在相对的角落然后玩宽度但我无法在对角处获得视觉效果.
require(ggplot2);require(gridExtra)
A <- ggplot(CO2, aes(x=Plant)) + geom_bar() +coord_flip()
B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip()
grid.arrange(A, B, ncol=1)
Run Code Online (Sandbox Code Playgroud)

使用ggplot2,我如何绘制一个在facet之间运行的趋势线.
library(ggplot2)
df <- data.frame(y=c(1,2,3),x=1,Set=LETTERS[1:3])
ggplot(df,aes(x,y)) +
theme_bw() + theme(legend.position=c(0,1),legend.justification=c(0,1)) +
geom_point(aes(fill=Set),color="black",shape=21,size=3) +
facet_grid(~Set) +
xlim(1,5)
Run Code Online (Sandbox Code Playgroud)
产生以下内容:
在上面,我想在这三点之间画一条线,横过小平面.
我使用ggplot2 facet在一列中绘制了两个面板,并希望在x = 4和8的面板上添加两条垂直线.以下是代码:
library(ggplot2)
library(gtable)
library(grid)
dat <- data.frame(x=rep(1:10,2),y=1:20+rnorm(20),z=c(rep("A",10),rep("B",10)))
P <- ggplot(dat,aes(x,y)) + geom_point() + facet_grid(z~.) + xlim(0,10)
Pb <- ggplot_build(P);Pg <- ggplot_gtable(Pb)
for (i in c(4,8)){
Pg <- gtable_add_grob(Pg, moveToGrob(i/10,0),t=8,l=4)
Pg <- gtable_add_grob(Pg, lineToGrob(i/10,1),t=6,l=4)
}
Pg$layout$clip <- "off"
grid.newpage()
grid.draw(Pg)
Run Code Online (Sandbox Code Playgroud)
上面的代码修改自:ggplot,跨越facet的点之间的绘制线.和
.
这个图有两个问题.首先,只显示了一条垂直线.它似乎moveToGrob只工作了一次..其次,显示的线在x = 4时并不准确.我没有找到Pb$panel$ranges变量,所以有没有办法可以纠正范围?非常感谢.