gpt4 book ai didi

r - R 中的 car::scatter3d - 更好地标记轴

转载 作者:行者123 更新时间:2023-12-04 02:42:31 25 4
gpt4 key购买 nike

我正在使用 scatter3d 并且 3 个轴只有两个端点值。我怎样才能在整个轴上获得标签,就像普通的 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 NAMESPACE 中查看常规调度的 scatter 方法。我只是将 scatter3d 中的 car:::scatter3d.formula 调用替换为“scatter3d.default "所以解释器会首先查看新定义的函数。)

编辑:比使用 scatter3d.formula 更好的方法是分配 car使用以下代码将命名空间/环境添加到新函数:
environment(scatter3d.default) <- environment(car:::scatter3d.formula)

然后,如果你这样做:
scatter3d(prestige ~ income + education, data=Duncan)

你得到了这个(用截图程序拍摄)
enter image description here

关于r - R 中的 car::scatter3d - 更好地标记轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8204972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com