如何在 R 中的 plot3d(库("rgl"))中制作对数轴?

How to make logarithmic axes in plot3d (library("rgl")) in R?

我在使用 rgl 包在 plot3d 中制作我的轴 logarithmic/have 自定义刻度线时遇到了极大的困难。我试过在我的代码中使用 "log='xy'" 命令,就像在基本绘图函数中一样,我还尝试使用 rgl.bbox 创建自定义刻度线。我的 y 轴绘制正常,但我的 x 和 z 不合作。我什么都做不了。有任何想法吗?下面是我的数据、代码和我得到的结果的图片。我还应该补充一点,我基本上是在 3d 中绘制多个 2d 散点图,使用任意 z 值来分隔各个 2d 图。

https://www.dropbox.com/s/wv24rmnyalm3vvc/scattertest.csv?dl=0

#!/usr/bin/env Rscript

library("rgl")

data <- read.csv("~/Desktop/scattertest.csv", header=TRUE, fill=TRUE, sep=',')

x <- names(data[2])
y <- names(data[3])
z <- names(data[4])

plot3d(data[[x]], data[[z]], data[[y]], type="s", size=0.75, lit=FALSE, axes=FALSE, 
   xlab="rpmn", ylab="round", zlab="rpmt", log="xz",
   xmin=c(0.1, 10^6), ymin=c(1,4), zmin=c(0.1, 10^6))


rgl.bbox(color="grey50", emission="grey50",
     xat = c(0.1, 1, 10, 100, 10^3, 10^4, 10^5, 10^6), yat = c(1, 2, 3, 4), zat = c(0.1, 1, 10, 100, 10^3, 10^4, 10^5, 10^6), 
     xlen=8, ylen=4, zlen=8)

plot3d()不支持log="xy",需要您自行改造。

您的代码要求对数标签,但您没有进行对数变换,因此它不起作用。您还需要重新缩放数据。

您没有post一个可重现的例子,但创建一个很容易:

x <- rlnorm(20, 2, 6)
y <- runif(20, 1, 4)
z <- rlnorm(20, 2, 6)
xyz <- cbind(log(x), y, log(z))
plot3d(xyz, axes = FALSE)
ticks <- 10^((-1):6)
bbox3d(xat = log(ticks), xlab = ticks, yat = pretty(1:4), 
       zat = log(ticks), zlab = ticks,
       color="grey50", emission="grey50")