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

时间:2016-10-27 04:28:07

标签: r rgl

我在使用rgl包在plot3d中使我的轴对数/具有自定义刻度标记时非常困难。我已尝试在我的代码中使用“log ='xy'”命令,就像在基本绘图函数中一样,我尝试使用rgl.bbox创建自定义刻度线。我的y轴绘制正常,但我的x和z没有合作。我无法得到任何工作。有任何想法吗?下面是我的数据,代码和我得到的结果的图片。我还要补充一点,我基本上使用任意z值在3d中绘制多个2d散点图来分隔各个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)

results from code

1 个答案:

答案 0 :(得分:0)

log="xy"plot3d()不支持您,您需要自己进行转换。

您的代码要求使用对数标签,但您没有进行对数转换,因此它无法正常工作。您还需要重新调整数据。

您没有发布可重复的示例,但创建一个很容易:

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")

sample output