【问题标题】:controlling column widths for side by side base graphic and ggplot2 graphic控制并排基本图形和 ggplot2 图形的列宽
【发布时间】:2013-01-16 12:29:26
【问题描述】:

@Ricardo Saporta 提出了here 一种将基本图形和 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() 函数这样做。

【问题讨论】:

  • 我认为没有简单的方法可以做到这一点。您可以使用 vp 宽度和大小。否则你可以看到这个question。但在这里他实现了你提到的链接的第一个解决方案。
  • @agstudy 这比您想象的要容易。看我的回答。
  • @Andrie 谢谢。我错过了这个问题。我以为他想要相同的绘图区域大小。这比我想象的要容易。

标签: r graphics ggplot2


【解决方案1】:

给你:

使用不同宽度的布局。请注意我如何将第一列定义为第二列宽度的两倍:

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)

【讨论】:

  • 谢谢!这正是我尝试过的方式,但没有成功。我没有掌握layout() 也没有viewport,肯定是我做错了什么。
  • @Andrie 我想知道您是否可以仅使用 Layout 并使用其默认参数保持视口获得相同的结果?
  • Andrie,我不明白layout() 函数的矩阵参数和宽度参数。例如,如果我希望第一列占总宽度的 60%,第二列占总宽度的 40%,那么要设置的矩阵和宽度是多少?
  • 矩阵参数只控制图形的绘制顺序,而不是宽度。使用 widhts 参数来表示,嗯,宽度。
  • @Andrie 抱歉,我刚刚编辑了我的评论。所以我把 widths=c(6,4) ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多