箱线图图形尺寸和比例
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,你应该熟悉它。
我想制作一个由 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,你应该熟悉它。