我正在尝试使用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)
是否可以使用ggplot绘制矩阵z
?
谢谢!
答案 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
如果需要,您可以非常轻松地更改轴标签。