5

我正在用 levelplot(格子)在 R 中创建一个相关热图。我想要盒子之间的边界,但不要沿着外面,因为它会干扰情节边界。如何从盒子中删除外边框?

这是我的代码:

levelplot(matrix, border="black", 
          colorkey=list(height=.25, space="right", at=seq(-1, 1, .25), cuts=7), 
          scales=list(y=(list(cex=1)), tck = c(1,0), x=list(cex=1, rot=90)),
          main="Leaf Correlations", xlab="", ylab="", 
          col.regions=scalebluered)

这就是它的样子..我不喜欢边缘的双线..

在此处输入图像描述

编辑:这是一个可重现的例子:

data(mtcars)
cars.matrix <- as.matrix(mtcars[c(2:8)])
cars.corr <- cor(cars.matrix)
levelplot(cars.corr, border="black", colorkey=list(height=.25, space="right", 
          at=seq(-1, 1, .25), cuts=7), 
          scales=list(y=(list(cex=1)), tck = c(1,0), x=list(cex=1, rot=90)), 
          xlab="", ylab="")
4

2 回答 2

5

好的,如果有点模糊,解决这个问题很简单。

只需使用lattice.options()重置axis.padding用于因子的值,将其从默认值 0.6(一点填充)更改为 0.5(无填充),你应该没问题:

lattice.options(axis.padding=list(factor=0.5))

## An example to show that this works
data(mtcars)
cars.matrix <- as.matrix(mtcars[c(2:8)])
cars.corr <- cor(cars.matrix)
levelplot(cars.corr, border="black", colorkey=list(height=.25, space="right", 
          at=seq(-1, 1, .25), cuts=7), 
          scales=list(y=(list(cex=1)), tck = c(1,0), x=list(cex=1, rot=90)), 
          xlab="", ylab="")

在此处输入图像描述

对于可能有用的未来参考,我通过快速查看prepanel.default.levelplot(). (除其他外,各种prepanel.***函数负责确定应分配给每个面板的坐标和最小区域,以便将要绘制到其中的对象都很好地适合。)

head(prepanel.default.levelplot, 4)

1 function (x, y, subscripts, ...)                    
2 {                                                   
3     pad <- lattice.getOption("axis.padding")$numeric
4     if (length(subscripts) > 0) {  
于 2013-11-01T20:06:26.363 回答
1

一点挖掘表明,许多 par 命令可能无法将其用于 Lattice 包图形。例如, par(bty = 'n') 在这个 levelplot 示例中不起作用

与基本 R 图不同,点阵图不受 par( ) 函数中设置的许多选项的影响。要查看可以更改的选项,请查看 help(xyplot)。在高级绘图函数中设置这些选项通常是最简单的……您可以编写修改面板渲染的函数。

尝试将轴颜色直接传递到图形中,采用Yangchen Lin在这里建议的方法:R lattice 3d plot: ticks消失时更改面板边框厚度

axis.line = list(col='transparent')
于 2013-11-01T18:48:19.913 回答