【问题标题】:How to add tick or bar on color scale for levelplot in R如何在 R 中的 levelplot 的色标上添加刻度线或条形图
【发布时间】:2013-09-08 16:54:21
【问题描述】:

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

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

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,但没有收到错误或警告,但似乎被忽略了。可能是我什至没有正确破解源代码。任何人都有关于如何在这个问题的上下文中修改 lattice 包中的代码的分步说明?

【问题讨论】:

    标签: r visualization lattice levelplot


    【解决方案1】:

    尝试使用 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')
    

    【讨论】:

      【解决方案2】:

      (更多的是对策略的扩展评论而不是最终答案。)如果您希望在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 来修改晶格对象的图例节点。或者,您可以四处寻找并尝试定位基于网格的注释。

      【讨论】:

      • 我对 R 不是很有经验,但我会尽量按照你说的去做。如果您可以为我的示例获得一个有效的 hack 版本,那就太好了
      • 我想我的第一次尝试是破解plot.trellis 代码以报告在绘制颜色键的视口中使用的值范围。 (但今天没有时间对此进行试验,因此需要其他人来做。)
      猜你喜欢
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-14
      相关资源
      最近更新 更多