2013-04-22 133 views
-5

我有五个数字列。我想用R中的不同颜色在一个图中绘制五列的频率分布。有人能帮我解释一下如何用一个例子来做到这一点。我是很新的R.频率分布R

+2

请在提问前做一些调查:http://www.cookbook-r.com/Graphs/Plotting_distributions_(ggplot2) – Roland 2013-04-22 14:52:50

+1

发布样本输入的可重现示例,期望ed输出和您尝试过的代码。 – Nishanth 2013-04-22 14:55:45

+0

我有5个元素的简单长度分布5列第1 5 7 8 9 10,第2 6 47 484 848,第3 38 383 838等等。我只是希望在一个直方图中用不同的颜色绘制整个数据集的频率分布。 – user2252362 2013-04-23 13:49:38

回答

0

这里有一个基础R解决方案:

d = data.frame(a = rnorm(100), b = rnorm(100, 1), c = rnorm(100, 2), d = rnorm(100, 3), e = rnorm(100, 4)) 

plot(density(d$a), xlim = c(-4, 8)) 
lines(density(d$b), col = "red") 
lines(density(d$c), col = "green") 
lines(density(d$d), col = "blue") 
lines(density(d$e), col = "yellow") 
+0

添加一个方法来自动计算'xlim'和'ylim'的范围,我很乐意为这个答案投票。 :) – A5C1D2H2I1M1N2O1R2T1 2013-04-22 17:26:05

5

使用从@eddi样本数据,你也可以考虑 “格” 包:

set.seed(1) 
d <- data.frame(a = rnorm(100), b = rnorm(100, 1), c = rnorm(100, 2), 
       d = rnorm(100, 3), e = rnorm(100, 4)) 

library(lattice) 

densityplot(~ a + b + c + d + e, data = d) 

这将产生:

enter image description here

如果你有很多列,你还可以创建你的p很多首先创建一个formula

myFormula <- as.formula(paste("~ ", paste(names(d), collapse = "+"))) 
densityplot(myFormula, data = d) 

你也应该探索可供densityplot的各种选项,如plot.points(可设置为FALSE如果你不想点的密度曲线的底部)和auto.key添加图例。


另一个明显的选择是使用 “GGPLOT2”,但对于这一点,你需要首先将数据转换为 “长” 格式:

d2 <- stack(d) 
library(ggplot2) 
qplot(values, colour=factor(ind), data=d2, geom="density") 

结果:

enter image description here