假设我想在xyplot没有明确指定轴限制的情况下创建一个普通的,那么轴限制是如何计算的?
以下代码行生成一个简单的散点图。但是,轴限制的范围并不完全在 1 到 10 之间,而是略微扩展到左侧和右侧以及顶部和底部(大约 0.5)。
library(lattice)
xyplot(1:10 ~ 1:10, cex = 1.5, pch = 20, col = "black",
xlab = "x", ylab = "y")
Run Code Online (Sandbox Code Playgroud)

有没有办法确定轴在每个站点上扩展的因子,例如使用trellis.par.get?执行上述xyplot命令后,我已经尝试了以下操作:
library(grid)
downViewport(trellis.vpname(name = "figure"))
current.panel.limits()
$xlim
[1] 0 1
$ylim
[1] 0 1
Run Code Online (Sandbox Code Playgroud)
不幸的是,面板限制作为归一化父坐标返回,这使得无法获得“真实”限制。任何建议将不胜感激!
更新:
使用 base-R plot,默认情况下,数据范围(以及轴限制)在每侧扩展 4%,请参阅?par。但是这个因素似乎不适用于“格子”对象。所以我正在寻找的是类似于在par.
轴限制xyplot在extend.limits函数中计算。这个函数不是从点阵包中导出的,所以要查看它,请输入lattice:::extend.limits. 关于数值向量,此函数被传递来自相应数据(c(1, 10)在本例中)的值范围。最终限值根据以下公式计算:
lim + prop * d * c(-1, 1)
Run Code Online (Sandbox Code Playgroud)
lim 是数据的限制,在这种情况下 c(1, 10)prop是lattice.getOption("axis.padding")$numeric,默认情况下是0.07d是diff(as.numeric(lim)),在这种情况下9在这种情况下的结果是 c(0.37, 10.63)
如果您有兴趣,从xyplotto的调用堆栈extend.limits是
xyplotxyplot.formulalimits.and.aspectlimitsFromLimitListextend.limits| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |