@Ricardo Saporta提出了here一种简单的方法,可以将基本图形和ggplot图形组合成多个图形。
我用这种方式在左边绘制一个基本图形,在右边绘制一个ggplot图形,它实际上包含两个图形(这是一个人为的例子,不是真实的例子,但它与我的实例具有相同的结构):< / p>
library(ggplot2)
library(gridExtra)
library(plotrix)
Mvalues <- matrix(rpois(9,1), ncol=3)
Mcolors <- matrix(rpois(9,5), ncol=3)
par(mfrow=c(1,2))
color2D.matplot(x=Mvalues, show.values=2, cellcolors=Mcolors,
xlab="x", ylab="y", axes=FALSE, vcex=0.4)
gg2 <- ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar(position="dodge")
ta <- do.call(arrangeGrob, list(gg2,gg2))
vp.Left <- viewport(height=unit(1, "npc"), width=unit(0.5, "npc"),
just="left", y=0.5, x=0.5)
print(ta, vp=vp.Left)
非常好。但现在我希望基本图形的宽度大于ggplot图形。怎么做 ?我使用layout()
函数尝试这样做失败了。
答案 0 :(得分:4)
你走了:
使用不同宽度的布局。请注意我如何将第一列定义为第2列宽度的两倍:
layout(matrix(c(1, 2, 1, 3), ncol=2, byrow=TRUE), widths=c(2, 1))
设置图形
layout(matrix(c(1, 2, 1, 3), ncol=2, byrow=TRUE), widths=c(2, 1))
color2D.matplot(x=Mvalues, show.values=2, cellcolors=Mcolors,
xlab="x", ylab="y", axes=FALSE, vcex=0.4)
gg2 <- ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar(position="dodge")
ta <- do.call(arrangeGrob, list(gg2,gg2))
现在定义视口。你的代码几乎就在那里。我只是将其修改为右对齐,并将宽度更改为33%:
vp <- viewport(height=unit(1, "npc"), width=unit(0.33, "npc"),
just="right", x=1, y=0.5)
最后,打印剩余的图形:
print(ta, vp=vp)