簡體   English   中英

控制並排基本圖形和ggplot2圖形的列寬

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM