我正在使用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="")
答案 0 :(得分:4)
好的,如果有点模糊,对此的修复很简单。
只需使用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) {
答案 1 :(得分:1)
有点挖掘显示that a lot of the par commands may not make it to Lattice package graphics。例如,par(bty ='n')won't work in this levelplot example。
与基本R图不同,格子图不受par()函数中设置的许多选项的影响。要查看可以更改的选项,请查看help(xyplot)。在高级绘图功能中设置这些选项通常最简单...您可以编写修改面板渲染的功能。
尝试将轴颜色直接传递到图形ala Yangchen Lin建议的方法:R lattice 3d plot: ticks disappear when changing panel border thickness
axis.line = list(col='transparent')