我正在使用scatter3d,三个轴只有两个端点值。像正常的plot()函数一样,如何在整个轴上获取标签?
最佳答案
那好吧。我把它当作挑战。
显然,您需要:
require(rgl)
require(car)
require(mgcv) # for the example
复制
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
然后在第二个
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])
}
(您可能需要替换
scatter3d.formula
的代码,这样就不会在常规分配的car
方法的scatter
名称空间中查找。我只是将scatter3d
内部的car:::scatter3d.formula
调用替换为“ scatter3d.default ”,那么解释器将首先查看新定义的函数。)编辑:比用
scatter3d.formula
废除更好的方法是使用以下代码将car
命名空间/环境分配给新函数:environment(scatter3d.default) <- environment(car:::scatter3d.formula)
然后,如果您这样做:
scatter3d(prestige ~ income + education, data=Duncan)
您得到了此信息(通过屏幕截图程序拍摄)