R 为什么等高线图的范围这么小?

R 为什么等高线图的范围这么小?,r,plot,R,Plot,我试图用等高线画出R中多重正态分布的密度,我的代码如下 set.seed(123) x<-seq(-20,20,by=0.1) y<-seq(-20,20,by=0.1) n=length(x) zz<-matrix(0,n,n) for(i in 1:n){ for(j in 1:n){ zz[i,j]=exp(-x[i]^2/10-y[j]^2/5-2*0.3*x[i]*y[j]/(50^0.5)) } } contour(x,y,zz,nlevels =10)

我试图用等高线画出R中多重正态分布的密度,我的代码如下

set.seed(123)
x<-seq(-20,20,by=0.1)
y<-seq(-20,20,by=0.1)
n=length(x)
zz<-matrix(0,n,n)
for(i in 1:n){
  for(j in 1:n){
  zz[i,j]=exp(-x[i]^2/10-y[j]^2/5-2*0.3*x[i]*y[j]/(50^0.5))
  }
}
contour(x,y,zz,nlevels =10)
set.seed(123)

x水平决定了要绘制的范围,在您的示例中,当您远离中心时,z值非常小:

barplot(colMeans(zz))

如果查看默认创建的级别:

pretty(range(zz), 20)
 [1] 0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70
[16] 0.75 0.80 0.85 0.90 0.95 1.00
我不太熟悉你需要用这个图做什么,所以希望下面的内容有意义

要覆盖更广泛的区域,您需要扩展级别以覆盖较低的值:

RN = quantile(zz,prob=c(0.5,1))
N = 10

contour(x,y,zz,nlevels=N,
levels=exp(pretty(log(RN), 10)))