我正在使用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)

我有一些我想要绘制的不同类别.这些是不同的类别,每个类别都有自己的标签集,但在文档中将它们组合在一起是有意义的.以下给出了一些简单的堆积条形图示例:
df <- data.frame(x=c("a", "b", "c"),
y=c("happy", "sad", "ambivalent about life"))
ggplot(df, aes(x=factor(0), fill=x)) + geom_bar()
ggplot(df, aes(x=factor(0), fill=y)) + geom_bar()
Run Code Online (Sandbox Code Playgroud)
问题在于,对于不同的标签,图例具有不同的宽度,这意味着图表具有不同的宽度,如果我制作桌子或\subfigure元素,会导致看起来有点傻.我怎样才能解决这个问题?
有没有办法明确设置绘图或图例的宽度(绝对或相对)?
我使用此处指示的方法来对齐共享相同横坐标的图形.
但是当我的一些图表有一个传奇而其他图表没有传说时,我无法使它工作.
这是一个例子:
library(ggplot2)
library(reshape2)
library(gridExtra)
x = seq(0, 10, length.out = 200)
y1 = sin(x)
y2 = cos(x)
y3 = sin(x) * cos(x)
df1 <- data.frame(x, y1, y2)
df1 <- melt(df1, id.vars = "x")
g1 <- ggplot(df1, aes(x, value, color = variable)) + geom_line()
print(g1)
df2 <- data.frame(x, y3)
g2 <- ggplot(df2, aes(x, y3)) + geom_line()
print(g2)
gA <- ggplotGrob(g1)
gB <- ggplotGrob(g2)
maxWidth <- grid::unit.pmax(gA$widths[2:3], gB$widths[2:3])
gA$widths[2:3] <- maxWidth
gB$widths[2:3] <- maxWidth
g <- arrangeGrob(gA, gB, …Run Code Online (Sandbox Code Playgroud)