2017-01-23 2 views
1

Я пытаюсь поместить несколько легенд фона на участок rgl (в моем примере с реальным, один для строк и один для точек), и я бы хотел, чтобы они были в разных углах экран. Похоже, что поведение по умолчанию rgl заключается в замене старой легенды при вызове новой. Следующий код, модифицированный из rgllegend3d например, иллюстрирует это:Несколько 2D фоновых рисунков в RGL

library(rgl) 
x <- rnorm(100) 
y <- rnorm(100) 
z <- rnorm(100) 
open3d() 
par3d(windowRect = c(100, 100, 612, 612)) 
plot3d(x, y, z) 
legend3d(x = 0, y = 0, xjust = 0, yjust = 0, legend = c("2D", "3D"), pch = c(1, 16)) 
legend3d(x = 1, y = 0, xjust = 1, yjust = 0, legend = c("2D", "3D"), pch = c(1, 16)) 

Что я могу сделать, чтобы устранить эту проблему и получить появляться несколько 2D-графики?

ответ

2

legend3d() делает фона, используя legend() после plot(). Поэтому он не может создавать несколько легенд. Было бы лучше использовать bgplot3d().

open3d() 
par3d(windowRect = c(100, 100, 612, 612)) 

plot3d(x, y, z) 

bgplot3d({ 
    par(mar = c(0, 0, 0, 0)) 
    plot(0, 0, type = "n", xlim = 0:1, ylim = 0:1, xaxs = "i", 
     yaxs = "i", axes = FALSE, bty = "n") 
    legend(x = 0, y = 0, xjust = 0, yjust = 0, legend = c("2D", "3D"), pch = c(1, 16)) 
    legend(x = 1, y = 0, xjust = 1, yjust = 0, legend = c("2D", "3D"), pch = c(1, 16)) 
}) 

enter image description here

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