箱线图图形尺寸和比例

Boxplots figure dimension and proportion

我想制作一个由 3 个箱线图组成的图形,我使用了下面的代码,但是最终图形的比例错误(见下文)。我要编辑什么function/parameter?

vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y)
grid.newpage()
pushViewport(viewport(layout = grid.layout(1, 3)))
print(A, vp = vplayout(1,1))
print(B, vp = vplayout(1,2))
print(C, vp = vplayout(1,3))

这是一个分面的例子。如果您提供了数据,这会容易很多。请以后也这样做!!

set.seed(1)
df <- data.frame(ID=rep(c("WTN","KON","WTH","KOH"),each=30), 
                 AMP = rnorm(120, sd=20),
                 ADP = rnorm(120, sd=10),
                 ATP = rnorm(120, sd=30))

library(reshape2)
library(ggplot2)
gg.df <- melt(df, id="ID", variable.name="Adenosine")
ggplot(gg.df, aes(x=ID, y=value, fill=ID))+
  geom_boxplot()+
  facet_wrap(~Adenosine)

解释:我假设你的 AMP、ADP 和 ATP 数据在不同的列中,这就是你制作三个不同 ggplots 的原因(当然我不知道,因为你没有提供你的数据(!!))。处理此问题的正确方法是将您的数据从 "wide" 格式(不同列中的数据)转换为 "long" 格式(一列中的所有数据和第二列以区分原始列)。为此,我们在重塑包中使用 melt(...)。然后我们可以使用 ID 填充并使用 Adenosine 划分面。

这种模式:宽数据 > 长数据 > ggplot 非常常见。如果你打算经常使用 ggplot,你应该熟悉它。