[英]controlling column widths for side by side base graphic and ggplot2 graphic
@Ricardo Saporta在這里提出了一種簡單的方法,可以在多個圖形中組合基本圖形和ggplot圖形。
我使用這種方式在左側繪制一個基礎圖形,在右側繪制一個ggplot圖形,該圖形實際上包含兩個圖形(這是一個人工示例,不是真實的示例,但其結構與我的真實示例相同):
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()
函數這樣做。
干得好:
使用不同寬度的布局。 請注意,我如何將第一列定義為列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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.