首页 > 解决方案 > 如何在同一个中绘制多个轮廓

问题描述

我试图在 R 中使用 ggplot2 在同一个图中获得两个轮廓。

这是一个可重现的示例:

library(MASS)
library(ggplot2)
# first contour
m <- c(.0, -.0)
sigma <- matrix(c(1,.5,.5,1), nrow=2)
data.grid <- expand.grid(s.1 = seq(-3, 3, length.out=200), s.2 = seq(-3, 3, length.out=200))
q.samp <- cbind(data.grid, prob = mvtnorm::dmvnorm(data.grid, mean = m, sigma = sigma))

plot1 <- ggplot(q.samp, aes(x = s.1, y = s.2, z = prob)) +
  stat_contour(color = 'green')

# second contour
m1 <- c(1, 1)
sigma1 <- matrix(c(1,-.5,-.5,1), nrow=2)
set.seed(10)
data.grid1 <- expand.grid(s.1 = seq(-3, 3, length.out=200), s.2 = seq(-3, 3, length.out=200))
q.samp1 <- cbind(data.grid1, prob = mvtnorm::dmvnorm(data.grid1, mean = m1, sigma = sigma1))
plot2 <- ggplot(q.samp1, aes(x = s.1, y = s.2, z = prob)) +
  stat_contour(color = 'red')

但是,尝试plot1 + plot2也行不通。有没有办法让两个轮廓在同一个图上。

标签: rggplot2

解决方案


包含另一个stat_contour具有不同数据的内容怎么样?

ggplot(q.samp1, aes(x = s.1, y = s.2, z = prob)) +
  stat_contour(color = 'red') + 
  stat_contour(data = q.samp, aes(x = s.1, y = s.2, z = prob), color = 'green')

在此处输入图像描述


推荐阅读