Cod*_*Guy 10 r scatter-plot rgl
我正在使用scatter3d,3轴只有两个端点值.如何在整个轴上获得标签,就像普通的plot()函数一样?
42-*_*42- 28
那好吧.我认为这是一个挑战.
显然你需要:
require(rgl)
require(car)
require(mgcv) # for the example
Run Code Online (Sandbox Code Playgroud)
复制car:::scatter3d.default代码并将其粘贴回来,并将其分配给scatter3d.default.
在代码的早期添加这些行scatter3d.default:
showLabels3d <- car:::showLabels3d
nice <- car:::nice
# since you will be losing their connection to the unexposed fns in car
Run Code Online (Sandbox Code Playgroud)
然后在第二个代码块之后if(axis.scales){ ...},替换此代码:
if (axis.scales) {
x.labels <- seq(lab.min.x, lab.max.x,
by=diff(range(lab.min.x, lab.max.x))/4)
x.at <- seq(min.x, max.x, by=nice(diff(range(min.x, max.x))/4))
rgl.texts(x.at, -0.05, 0, x.labels, col = axis.col[1])
z.labels <- seq(lab.min.z, lab.max.z,
by=diff(range(lab.min.z, lab.max.z))/4)
z.at <- seq(min.z, max.z, by=diff(range(min.z, max.z))/4)
rgl.texts(0, -0.1, z.at, z.labels, col = axis.col[3])
y.labels <- seq(lab.min.y, lab.max.y,
by=diff(range(lab.min.y, lab.max.y))/4)
y.at <- seq(min.y, max.y, by=diff(range(min.y, max.y))/4)
rgl.texts(-0.05, y.at, -0.05, y.labels, col = axis.col[2])
}
Run Code Online (Sandbox Code Playgroud)
(您可能需要替换代码,scatter3d.formula以便不会在carNAMESPACE中查找常规调度的scatter方法.我只是用"scatter3d.default" 替换scatter3d内部调用car:::scatter3d.formula,因此解释器将首先查看新定义的函数.)
编辑:比使用此代码更好的方法scatter3d.formula是car使用以下代码将命名空间/环境分配给新函数:
environment(scatter3d.default) <- environment(car:::scatter3d.formula)
Run Code Online (Sandbox Code Playgroud)
然后,如果你这样做:
scatter3d(prestige ~ income + education, data=Duncan)
Run Code Online (Sandbox Code Playgroud)
你得到这个(用截图程序拍摄)

| 归档时间: |
|
| 查看次数: |
3894 次 |
| 最近记录: |