如何在R中的水平图的色标上添加刻度线或条形

时间:2013-09-08 16:54:22

标签: r visualization lattice levelplot

使用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。

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

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分:-1)

(更多关于策略的扩展评论而非最终答案。)如果您希望在levelplot代码的上下文中使用网格绘图功能,则需要对{深入研究'{ {1}}和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来修改网格对象的图例节点。或者你可以破解并尝试定位基于网格的注释。