使用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
,但我没有收到错误或警告,但似乎被忽略了。可能是我甚至没有正确地破解源代码。是否有人在这个问题的上下文中有关如何修改晶格包中的代码的分步说明?
答案 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
来修改网格对象的图例节点。或者你可以破解并尝试定位基于网格的注释。