使用ggplot和R绘制预定义的密度函数

8

我有三个不同长度的数据集,希望在同一张图上绘制它们的密度函数。使用基本图形库很容易实现:

n <- c(rnorm(10000), rnorm(10000))
a <- c(rnorm(10001), rnorm(10001, 0, 2))
p <- c(rnorm(10002), rnorm(10002, 2, .5))

plot(density(n))
lines(density(a))
lines(density(p))

这使我得到类似于以下内容:

alt text http://www.cerebralmastication.com/wp-content/uploads/2009/10/density.png

但我真正想用GGPLOT2来实现这个功能,因为我想添加其他仅在GGPLOT2中可用的功能。看起来GGPLOT真的想拿我的经验数据计算出密度,并因为我的数据集长度不同而抱怨了很多次。那么,我该如何在GGPLOT2中绘制这三个密度图呢?


只是好奇...你为什么总是将ggplot2大写? - Eduardo Leoni
我其实不是故意的...是我的小指头。它会不经过我的允许就跳到那里按下Shift键。 :) 我想这可能是因为整天打大写缩写词的结果,变成了无意识的习惯。我会有意识地努力让它保持小写。我在使用plyr时也会做同样的事情(甚至在我打这个单词的时候,我必须回退并将它变成小写)。Hadley已经因为我在代码中的变量名混合大小写和下划线而批评了我。如果我不小心的话,你们会让我变得更加整洁易读! - JD Long
1个回答

12
在ggplot2中获得幸福的秘诀是将所有内容都放入“长格式”(或矩阵导向人士所谓的“稀疏格式”)中:
df <- rbind(data.frame(x="n",value=n),
            data.frame(x="a",value=a),
            data.frame(x="p",value=p))
qplot(value, colour=x, data=df, geom="density")

如果你不想要颜色:

qplot(value, group=x, data=df, geom="density")

你让我的夜晚好多了。我一直在苦苦挣扎,无法解决这个问题。非常感谢你。 - JD Long

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接