R轮廓水平与fill.contour不匹配

时间:2015-06-02 18:48:08

标签: r contour

希望这是一个简单的问题,但我使用filled.contour()在R中做了一个简单的数字。它看起来很好,并且在给定数据的情况下应该是什么样的。但是,我想沿轮廓添加一个参考线为0(水平= 0),并且绘制的线与fill.contour图上的颜色不匹配。线条很近,但与图形不匹配(并最终穿过fill.contour图中的另一个轮廓)。任何想法为什么会发生这种情况?

aa <- c(0.05843150,  0.11300040,  0.15280030,  0.183524400,  0.20772430,  0.228121000)
bb <- c(0.01561055,  0.06520635,  0.10196237,  0.130127650,  0.15314544,  0.172292410)
cc <- c(-0.02166599,  0.02306650,  0.05619421,  0.082193680,  0.10334837,  0.121156780)
dd <- c(-0.05356592, -0.01432910,  0.01546647,  0.039156660,  0.05858709,  0.074953650)
ee <- c(-0.08071987, -0.04654243, -0.02011676,  0.000977798,  0.01855881,  0.033651089)
ff <- c(-0.10343798, -0.07416114, -0.05111547, -0.032481132, -0.01683215, -0.003636035)
gg <- c(-0.12237798, -0.09753544, -0.07785126, -0.061607548, -0.04788856, -0.036169540)

hh <-rbind(aa,bb,cc,dd,ee,ff,gg)

z <- as.matrix(hh)
y <- seq(0.5,1.75,0.25)
x <- seq(1,2.5,0.25)

filled.contour(x,y,z,
           key.title = title(main=expression("log"(lambda))),
           color.palette = topo.colors) #This works

contour(x,y,z, level=0,add=T,lwd=3) #This line doesn't match plot

1 个答案:

答案 0 :(得分:1)

?filled.contour帮助页面完全回答了这一问题。在Notes部分中说明了

  

filled.contour产生的输出实际上是两个图的组合;一个是填充轮廓,一个是图例。为这两个图设置了两个独立的坐标系,但它们仅在内部使用 - 一旦函数返回,这些坐标系就会丢失。如果要注释主轮廓图,例如添加点,可以在plot.axes参数中指定图形命令。参见示例。

该帮助页面中给出的示例显示了如何在主图上添加注释。在这种特殊情况下,正确的方法是

filled.contour(x,y,z,
    key.title = title(main=expression("log"(lambda))),
    color.palette = topo.colors,
    plot.axes = {
        axis(1)
        axis(2)
        contour(x,y,z, level=0,add=T,lwd=3)             
    }
)

产生

enter image description here