Как автоматически перемещать метки осей в rgl R

Во-первых, спасибо всем, кто нашел время, чтобы прочитать мой плохой английский и помочь мне решить мою проблему (это мой первый пост с вопросом).

В rgl оси, которые записывает функция bbox, перемещаются автоматически, поэтому они не закрывают данные. Но метки оси не двигаются. Насколько я знаю, title3d() и mtext3d() могут писать метки оси только в фиксированных положениях. Я понимаю это насильно, меняя тиковые лаборатории по осям на лаборатории по осям. Но график грязный, и метод не может относиться к длинной лаборатории. Есть ли способ сделать автоматически перемещающиеся лаборатории?

Вот пример кода с моим принудительным методом:

library(rgl)
x <- rnorm(10, 3, 1); y <- rnorm(10, 4, 1); z <- rnorm(10, 2, 1)

open3d()
plot3d(x, y, z, type="s", col="red", radius=0.05, xlab="XX", ylab="YY", zlab="ZZ", box=F)
# Axes move automatically, but labels don't.

# My forcibly method's code
my.labaxes <- function(xlab, ylab, zlab, box = T) {
  my.xat <- pretty(par3d("bbox")[1:2])[ 2 : (length(pretty(par3d("bbox")[1:2]))-1) ]
  my.yat <- pretty(par3d("bbox")[3:4])[ 2 : (length(pretty(par3d("bbox")[3:4]))-1) ]
  my.zat <- pretty(par3d("bbox")[5:6])[ 2 : (length(pretty(par3d("bbox")[5:6]))-1) ]
  my.xlab <- my.xat
  my.ylab <- my.yat
  my.zlab <- my.zat
  my.xlab[round( length(my.xat) / 2 + 0.1)] <- xlab 
  my.ylab[round( length(my.yat) / 2 + 0.1)] <- ylab
  my.zlab[round( length(my.zat) / 2 + 0.1)] <- zlab
  if(box) axes3d("bbox", xat = my.xat, yat = my.yat, zat = my.zat, 
                 xlab = my.xlab, ylab = my.ylab, zlab = my.zlab, box = T)
  else axes3d("bbox", xat = my.xat, yat = my.yat, zat = my.zat, 
              xlab = my.xlab, ylab = my.ylab, zlab = my.zlab, box = F)
}

open3d()
plot3d(x, y, z, type="s", col="red", radius=0.05, xlab="", ylab="", zlab="", axes=F)
my.labaxes(xlab="XX", ylab="YY", zlab="ZZ", box=F)

сюжет

1 ответ

Решение

Нет, это невозможно. Будут перемещаться только отметки и фон для сюжета. Вам нужно будет изменить код в src/BBoxDeco.cpp, чтобы добавить поддержку перемещения меток, а затем выполнить множество изменений в коде R, который вызывает это. Это было бы не так просто.

Другие вопросы по тегам