1

所以我试图通过从一组基因中制作箱线图来可视化我的数据,这样对于每个基因我都有不同的盒子来处理不同的菌株。数据看起来或多或少是这样的:

Strain  gene1         gene2      gene3  .   .   .
 A    2.6336700     1.42802     0.935742
 A    2.0634700     2.31232     1.096320
 A    2.5798600     2.75138     0.714647
 B    2.6031200     1.31374     1.214920
 B    2.8319400     1.30260     1.191770
 B    1.9796000     1.74199     1.056490
 C    2.4030300     1.20324     1.069800
 C    1.4829864     5.570571    12.29139
 C    0.7212928     6.070519    11.63530
 .
 .
----------

所以对于这个例子,我想得到 3 张不同的图片(每个基因一张),每张图片应该包含 3 个框(每个菌株一个)。可能有一种很好且简单的方法可以做到这一点,但到目前为止我正在画一个空白......


感谢所有的答案/建议,这真的很有帮助。

4

2 回答 2

4

这是使用ggplot2.

首先,我们将您的数据框传递给长格式:

library(reshape2)
dfm <- melt(df)

接着 :

library(ggplot2)
ggplot(data=dfm) + geom_boxplot(aes(x=Strain,y=value)) + facet_wrap(~variable)

在此处输入图像描述

于 2013-09-30T08:51:11.713 回答
3

lattice软件包非常适合这种分组。我一直发现它比ggplot2. 您也可以使用老式的基础 R“ink-on-paper-method”(链接)来完成它,尽管它有点手动。

首先,您需要重塑数据框(顺便说一句reshape2,使用 juba 建议的包可以更好地完成此步骤,但我将保留我的解决方案作为替代方案)。

str <- "Strain  gene1         gene2      gene3
 A    2.6336700     1.42802     0.935742
 A    2.0634700     2.31232     1.096320
 A    2.5798600     2.75138     0.714647
 B    2.6031200     1.31374     1.214920
 B    2.8319400     1.30260     1.191770
 B    1.9796000     1.74199     1.056490
 C    2.4030300     1.20324     1.069800
 C    1.4829864     5.570571    12.29139
 C    0.7212928     6.070519    11.63530"

tab <- read.table(con <- textConnection(str), header=TRUE)
tab <- data.frame(Strain=tab$Strain, stack(tab[-1]))

names(tab) <- c("Strain", "Expression", "Gene")

然后绘制

library(lattice)
bwplot(Expression ~ Strain | Gene, tab)

在此处输入图像描述

或以其他方式组合成一个面板

bwplot(paste(Strain, Gene) ~ Expression, tab)

在此处输入图像描述

于 2013-09-30T08:53:19.697 回答