我一直试图使用R作为简单的密度图:
plot(density(Data$X1),col="red")
plot(density(Data$X2),col="green")
由于我想比较,我想在一个图中绘制两个。但'matplot'不起作用!!我也试过用ggplot2作为:
library(ggplot2)
qplot(Data$X1, geom="density")
qplot(Data$X2, add = TRUE, geom="density")
同样在这种情况下,情节单独出现(虽然我写了add = TRUE)!!有人能想出一个简单的问题解决方案吗?
答案 0 :(得分:3)
您可以尝试:
plot(density(Data$X1),col="red")
points(density(Data$X2),col="green")
我必须补充一点,理想情况下,xlim
和ylim
值应设置为包含X1和X2的范围,可以按如下方式进行:
foo <- density(Data$X1)
bar <- density(Data$X2)
plot(foo,col="red", xlim=c(min(foo$x,bar$x),max(foo$x,bar$x)) ylim=c(min(foo$y,bar$y),max(foo$y,bar$y))
points(bar,col="green")
答案 1 :(得分:3)
在ggplot2
或lattice
中,您需要对数据进行整形以对其进行处理。
例如:
dat <- data.frame(X1= rnorm(100),X2=rbeta(100,1,1))
library(reshape2)
dat.m <- melt(dat)
使用``lattice`
densityplot(~value , groups = variable, data=dat.m,auto.key = T)
使用``ggplot2`
ggplot(data=dat.m)+geom_density(aes(x=value, color=variable))
编辑添加X1 + X2
使用lattice和扩展的formua接口,这很容易做到:
densityplot(~X1+X2+I(X1+X2) , data=dat) ## no need to reshape data!!
答案 2 :(得分:1)
在基础图形中,如果保持范围相同并在它们之间使用par(new=TRUE)
,则可以覆盖密度图。我认为add=TRUE
是一种基本的图形策略,有些功能但并非所有功能都会受到尊重。
答案 3 :(得分:0)
如果您在n
的来电中指定from
,to
和density
,并确保它们在2个来电之间匹配,那么您应该可以使用matplot
只需一步绘制(您需要将2组y值绑定到单个矩阵中)。