1

使用包中的levelplot功能lattice,如何添加刻度线或线以突出显示水平图旁边色标上的值。

更具体地说,我将协方差矩阵绘制为热图,例如,我希望能够在色标上指示显着性水平。

library(lattice)

mat <- matrix(rnorm(25),ncol=5,nrow=5)
cov.m <-  cov(mat[,1:5],mat[1:5,])

levelplot(cov.m,  xlab="", ylab="", 
          col.regions= colorRampPalette(c("blue","white","red"), 
          space = "rgb"), cuts=100, at=seq(-0.2,1,0.005))

我现在想在相邻的色标上指示 0.18。

更新:所以,我尝试添加一个ablineto plot.trellis,但我没有收到错误或警告,但它似乎被忽略了。可能是我什至没有正确破解源代码。任何人都有关于如何在这个问题的上下文中修改 lattice 包中的代码的分步说明?

4

2 回答 2

0

尝试使用yscale.components=yscale.raster.subticks。例如:

levelplot(cov.m, 
       col.regions= colorRampPalette(c("blue","white","red"), space = "rgb"), 
       at=seq(-0.2,1,0.005)),
       yscale.components=yscale.raster.subticks,
       xscale.components=xscale.raster.subticks,
       margin=FALSE, 
       ylab='Y', 
       xlab='X', 
       main='Plot Name')
于 2015-04-24T14:31:12.597 回答
-1

(更多的是对策略的扩展评论而不是最终答案。)如果您希望在levelplot代码上下文中使用网格绘图功能,您将需要对包进行“深入lattice研究” grid

 methods(levelplot)
 getAnywhere(lattice.matrix)
 getAnywhere(lattice.formula)
 getAnywhere(construct.legend)
 lev <- levelplot(cov.m,  xlab="", ylab="", 
      col.regions= colorRampPalette(c("blue","white","red"), 
      space = "rgb"), cuts=100, at=seq(-0.2,1,0.005))
 lev$legend
 methods(print)
 getAnywhere(print.trellis)
 getAnywhere(plot.trellis)

函数中的图例绘制线位于plot.trellis底部。您可以创建一个新的plot.trellis并用于update.trellis修改晶格对象的图例节点。或者您可以四处寻找并尝试定位基于网格的注释。

于 2013-09-08T17:22:34.480 回答