gpt4 book ai didi

r - 使用 ggplot2 叠加双变量高斯分布的两个等高线

转载 作者:行者123 更新时间:2023-12-04 10:55:52 26 4
gpt4 key购买 nike

我想使用 ggplot2 在同一个图上叠加双变量高斯分布的两个等高线,每个等高线使用不同的颜色。我查看了之前关于如何绘制双变量高斯等高线的帖子 (Plot multivariate Gaussian contours with ggplot2)。但这只是绘制一个轮廓。我尝试使用 stat_density2d,但没有成功。这是我的代码和可重现的示例。

set.seed(13)
m1 <- c(.5, -.5)
sigma1 <- matrix(c(1,.5,.5,1), nrow=2)

m2 <- c(0, 0)
sigma2 <- matrix(c(140,67,67,42), nrow=2)


data.grid <- expand.grid(s.1 = seq(-25, 25, length.out=200), s.2 = seq(-25,
25, length.out=200))
q.samp <- cbind(data.grid, prob = mvtnorm::dmvnorm(data.grid, mean = m2,
sigma = sigma2))
ggplot(q.samp, aes(x=s.1, y=s.2, z=prob)) +
geom_contour() +
coord_fixed(xlim = c(-25, 25), ylim = c(-25, 25), ratio = 1)

最佳答案

如果我按照您的代码并根据您的参数创建 q1.sampq2.samp:

 q2.samp = cbind(data.grid, prob = mvtnorm::dmvnorm(data.grid, mean = m2, sigma=sigma2))
q1.samp = cbind(data.grid, prob = mvtnorm::dmvnorm(data.grid, mean = m1, sigma=sigma1))

然后我可以这样做:

 ggplot() + 
geom_contour(data=q1.samp,aes(x=s.1,y=s.2,z=prob)) +
geom_contour(data=q2.samp,aes(x=s.1,y=s.2,z=prob),col="red")

然后我得到一组默认颜色的轮廓和一组红色的轮廓。

enter image description here

关于r - 使用 ggplot2 叠加双变量高斯分布的两个等高线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50303683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com