在R中绘制两个不同组中的多个测量的分布

时间:2015-07-06 09:59:22

标签: r plot distribution

我在两组中测量了大约1000个变量,每组有10个重复,换句话说,我有2个数据帧,每列有10列和1000行。

我想在两个不同的组中显示我的测量值的分布,以获取各组之间显着不同的变量。我最初的想法是做一个大的散点图,其中x坐标是变量的迭代,y坐标是测量,点可以是彩色编码的。它并没有像预期的那样工作,但是,我得到了一个散点图矩阵。

我试着用箱线图,

ratios1 <- as.data.frame(matrix(rnorm(10000) * 100, 1000, 10))
boxplot(t(log2(ratios1)), horizontal = T)

哪种方式有效但方框的所有线条都使得情节难以辨认,即使对于单个组也是如此(见下图)。然后我尝试删除这些框,然后将这些点添加为https://trigger.io/forge/toolkit/

boxplot(t(log2(ratios1)), horizontal = T, border = "white")
points(t(log2(ratios1)), pch=1) 

但是那也没有用,因为我只得到了图上绘制的第一个变量。

如何显示此类信息?

vertical boxplot

1 个答案:

答案 0 :(得分:0)

首先,列对应于观察的变量和行,而不是相反。

set.seed(42)
ratios1 <- as.data.frame(matrix(rnorm(10000) * 100, 10, 1000))

你可以像这样绘制分位数:

library(reshape2)
ratios2 <- melt(ratios1)
library(ggplot2)
ggplot(ratios2, aes(x = as.numeric(variable), y = value)) +
  stat_summary(fun.data = function(y) as.data.frame(setNames(as.list(quantile(y, probs = c(0.025, 0.5, 0.975))), c("ymin", "y", "ymax"))), 
               color = "blue") +
  stat_summary(fun.data = function(y) as.data.frame(setNames(as.list(quantile(y, probs = c(0.25, 0.5, 0.75))), c("ymin", "y", "ymax"))), 
               color = "red") +
  xlab("variable")

resulting plot

您的数据中没有任何群组,因此我不知道该怎么做。也许你可以分组。但是,我不认为这种情节对于“选择不同群体之间存在显着差异的变量”的目标非常有用。我会做一个假设检验,对α误差通胀进行适当的修正。