【问题标题】:Plotting Contours with x, y, z values用 x、y、z 值绘制等高线
【发布时间】:2020-07-31 18:06:34
【问题描述】:

我正在尝试创建一个包含 1000 个数据点的等高线图。我有一个包含所有值的矩阵。这是我的代码。

mu1 <- rbind(2, 2)
mu2 <- rbind(-2, -2)
sigma1 <- rbind(c(.6, 0), c(0, .6))
simga2 <- sigma1
det1 <- det(sigma1)
det2 <- det1
inv1 <- solve(sigma1)
inv2 <- inv1
x <- runif(1000, -5, 5)
y <- runif(1000, -5, 5)
w <- rbind(x, y)
ratio <- function(v){
  quotient <- (exp((-1/2)*t(v-mu1)%*%inv1%*%(v-mu1)))/(exp((-1/2)*t(v-mu2)%*%inv2%*%(v-mu2)))
  return(quotient)
}
z <- apply(w, 2, ratio)
round.z <- round(z, digits=0)
df <- cbind(x, y, z, round.z)
df <- as.data.frame(df)

我想通过 round.z 值绘制 x 和 y 的等高线,包括其中 round.z=1。我知道round.z = 1的轮廓应该是y = -x线,但我不知道如何让它显示出来。感谢您的帮助。

【问题讨论】:

    标签: r ggplot2 plot graph contour


    【解决方案1】:

    R 中的contour 和相关函数希望将数据放在网格上,而不是像你这样的随机样本。 akima::interp 函数可以将您的数据转换为这种格式。例如,在运行您的代码后,

    library(akima)
    grid <- with(df, interp(x, y, round.z))
    contour(grid, levels = 10^(0:10))
    

    生成此图像:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-18
      • 2017-07-30
      • 2010-12-06
      • 2021-09-25
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多