我使用的是scatter3d,3个轴只有两个端点值。如何获得整个轴上的标签,就像普通的plot()函数所做的那样?
发布于 2011-11-21 09:24:53
哦,好吧。我把它当做一个挑战。
显然,您需要:
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方法。我只是简单地将car:::scatter3d.formula内部的scatter3d调用替换为"scatter3d.default“,这样解释器就会首先查看新定义的函数。)
编辑:比使用scatter3d.formula更好的方法是使用以下代码将car名称空间/环境分配给新函数:
environment(scatter3d.default) <- environment(car:::scatter3d.formula)然后,如果您这样做:
scatter3d(prestige ~ income + education, data=Duncan)你得到了这个(用截图程序拍摄)

发布于 2017-02-24 12:13:58
在scatter3d的帮助下,有了一个添加内部轴标注的新选项
axis.ticks
如果为TRUE,则打印内部轴-“tick”标签;默认值为FALSE。(此选项的代码由David Winsemius提供。)
https://stackoverflow.com/questions/8204972
复制相似问题