我在使用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)
答案 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")