在使用scatterplot3d包中的函数scatterplot3d()
时,grid=TRUE
仅绘制了XY平面的网格。查看函数源代码只有X和Y组件。我想提请对YZ-和XZ-平面网格为好,如下面的图片:将yz-和xz网格添加到scatterplot3d
我已经搜查了图像的R的例子scatterplot3d图片包含有这些网格无济于事。我想过s3d$plane3d
,但生成的飞机看起来非常混乱。
我有没有在R.经验编辑的代码或写功能我认为我可以在参数添加xy.grid,yz.grid和xz.grid然后修改原始定义为网格,像这样:
if (xy.grid) {
i <- x.min:x.max
segments(i, z.min, i + (yx.f * y.max), yz.f * y.max +
z.min, col = col.grid, lty = lty.grid)
i <- 0:y.max
segments(x.min + (i * yx.f), i * yz.f + z.min, x.max +
(i * yx.f), i * yz.f + z.min, col = col.grid, lty = lty.grid)
}
if (xz.grid) {
i <- x.min:x.max
segments(i, y.min, i + (zx.f * z.max), zy.f * z.max +
y.min, col = col.grid, lty = lty.grid)
i <- 0:z.max
segments(x.min + (i * zx.f), i * zy.f + y.min, x.max +
(i * zx.f), i * zy.f + y.min, col = col.grid, lty = lty.grid)
}
if (yz.grid) {
i <- y.min:y.max
segments(i, x.min, i + (yz.f * z.max), zx.f * z.max +
x.min, col = col.grid, lty = lty.grid)
i <- 0:z.max
segments(y.min + (i * yz.f), i * zx.f + x.min, y.max +
(i * yz.f), i * zx.f + x.min, col = col.grid, lty = lty.grid)
}
而且我也尝试在这个代码块中以一致的方式添加到x和z来定义这些y项。
y.range <- range(dat$y[is.finite(dat$y)], ylim)
y.prty <- pretty(y.range, n = lab[1], min.n = max(1, min(0.5 *
lab[1], p.lab[1])))
y.scal <- round(diff(y.prty[1:2]), digits = 12)
dat$y <- dat$y/y.scal
y.range <- range(y.prty)/y.scal
y.max <- ceiling(y.range[2])
y.min <- floor(y.range[1])
if (!is.null(ylim)) {
y.max <- max(y.max, ceiling(ylim[2]/y.scal))
y.min <- min(y.min, floor(ylim[1]/y.scal))
}
y.range <- range(y.min, y.max)
但是,运行此新代码时遇到错误,如Error in segments(i, y.min, i + (zx.f * z.max), zy.f * z.max + y.min, : object 'zx.f' not found
。我不确定该术语在功能代码中的定义方式和位置。我将不胜感激有助于将我引向正确的方向,谢谢!
我还附上了这里的scatterplot3d功能的原代码: scatterplot3d function source code
非常感谢您的帮助!我明天晚上会研究解决方案。 – shirleywu
@shirleywu欢迎您。 – agstudy
我刚刚意识到,通过选择你作为最佳答案不会自动奖赏赏金,对不起!并再次感谢! – shirleywu