2016-10-27 3 views
1

У меня возникли трудности с тем, чтобы сделать мои оси логарифмическими/иметь пользовательские отметки в plot3d, используя пакет rgl. Я пробовал использовать команду «log =« xy »в моем коде, как и в основной функции графика, и я попытался создать пользовательские метки с помощью rgl.bbox. Моя ось y построена отлично, но мои x и z не взаимодействуют. Я не могу заставить работать. Есть идеи? Ниже приведены мои данные, код и изображение результата, который я получаю. Я также должен добавить, что в основном я рисую несколько 2D-диаграмм в 3d, используя произвольное значение z для разделения отдельных 2D-графиков.Как сделать логарифмические оси в plot3d (библиотека ("rgl")) в R?

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

ответ

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

Смежные вопросы