绘制"列表"密度

时间:2012-11-08 10:01:36

标签: r

我有一个由10列和50行组成的data.frame。我使用apply函数逐列计算密度函数。现在我想绘制我一次计算出的密度。

换句话说,而不是绘图......

plot(den[[1]]) 
plot(den[[2]]
plot(den[[3]]

......我想立刻绘制所有密度。

我想我必须使用lapply函数,可能我必须编写一个特定的函数来执行此操作。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:6)

也许这会有所帮助

set.seed(001)
DF <- data.frame(matrix(rnorm(400, 100, 12), ncol=4)) # some data
den<-apply(DF, 2, density) # estimating density


par(mfrow=c(2,2))
sapply(den, plot) # plot each density
par(mfrow=c(1,1))

这给了......

enter image description here

给出一些名字:

par(mfrow=c(2,2))
for(i in 1:length(den)){
  plot(den[[i]], 
       main=paste('density ', i))
}
par(mfrow=c(1,1))

enter image description here

如果您只是不想在一个输出中包含所有绘图,您可能希望退出par(mfrow=c(2,2))并运行sapply(den, plot)

编辑:回答第二个问题(在评论中)

plot(den[[1]], ylim=c(0,.04), 
     main='Densities altogether') # plot the first density
for(i in 2:length(den)){          # Add the lines to the existing plot
  lines(den[[i]], col=i)          
}

enter image description here

使用legend函数添加图例

非常有用
legend('topright', paste('density ', 1:4), col=1:4, lty=1, cex=.65)

答案 1 :(得分:1)

我认为lattice包可以很方便:

以下来自Jilber的例子:

set.seed(001)
DF <- data.frame(matrix(rnorm(400, 100, 12), ncol=4)) # some data
DF <- stack(DF) # to long form

library(lattice)
densityplot(~values|ind, DF, as.table=TRUE)
# or
densityplot(~values, groups=ind, DF)

结果是:

Separate densities

Combined densities

答案 2 :(得分:1)

latticeExtra功能非常方便,marginalplot

marginal.plot(DF,layout=c(2,2))

enter image description here