带有ggplot和R的2D普通PDF

时间:2014-09-29 18:05:02

标签: r ggplot2 contour probability-density

我正在尝试使用ggplot制作轮廓/图像图,但直到现在都没有成功。

考虑R中的以下代码,创建一个带有双变量法线的PDF的矩阵z

require(mvtnorm)
x1 = seq(-3, 3, length.out=200)
x2 = seq(-3, 3, length.out=200)
z = matrix(0, length(x1), length(x2))
for (i in 1:length(x1)) {
    a = x1
    b = x2[i]
    z[,i] = dmvnorm(cbind(a,b))
}
image(x1,x2,z)

2D normal pdf image plot

是否可以使用ggplot绘制矩阵z

谢谢!

1 个答案:

答案 0 :(得分:3)

# reshape the data
require(reshape2)
dat <- melt(z)

# use geom_raster to mimic image

gg <- ggplot(dat, aes(x=Var2, y=Var1, fill=value))
gg <- gg + labs(x="", y="")
gg <- gg + geom_raster()
gg <- gg + coord_equal()
gg <- gg + scale_fill_gradient(low="red", high="yellow")
gg <- gg + scale_x_continuous(expand = c(0, 0))
gg <- gg + scale_y_continuous(expand = c(0, 0))
gg <- gg + theme_bw()
gg

enter image description here

如果需要,您可以非常轻松地更改轴标签。