में एक आरजीएल व्यूपॉइंट की प्रतिलिपि बनाना rgl
का उपयोग करके एक सभ्य दृष्टिकोण का चयन करना सुविधाजनक होगा और फिर उसी पैरामीटर को lattice
3 डी-प्लॉट में अपनाने के लिए सुविधाजनक होगा। उदाहरण के लिए, एक गैर-सूचनात्मक दृष्टिकोण का उपयोग करके निम्नलिखित साजिश दी गई।जाली
library(lattice)
wireframe(volcano, screen = list(x=0, y=0, z=0))
ही rgl
में खोला जा सकता द्वारा
library(rgl)
persp3d(volcano)
view3d(0, 0)
सहभागितापूर्ण तरीके से यह एक जानकारीपूर्ण देखने के लिए भूखंड बारी बारी से करने के लिए आसान है।
मैट्रिक्स इसी x
, y
, z
screen
मापदंडों जाली में देखने को दोहराने के लिए में में से
p <- par3d()
p$userMatrix
कैसे इस मैट्रिक्स परिवर्तित किया जा सकता निकाला जा सकता है वर्तमान rgl
दृष्टिकोण दे रही है ?
अद्यतन 1
मैं नीचे 42 के रूपांतरण बाहर की कोशिश की। कोड प्रति पंक्ति आरजीएल साजिश और संबंधित जाली साजिश दिखाता है। अगर मैंने इसे सही तरीके से कार्यान्वित किया है (नीचे कोड देखें), फिर भी एक मुद्दा प्रतीत होता है।
# convert rgl viewpoint into lattice
# screen orientation
rgl_to_lattice_viewpoint <- function()
{
p <- par3d()
rotm <- p$userMatrix
B = 360*atan(rotm[1,2]/rotm[2,2])/(2*pi)
P = 360*asin(-rotm[3,2])/(2*pi)
H = 360*atan(rotm[3,1]/rotm[3,3])/(2*pi)
list(x=-B, y=-P, z=-H)
}
# read and plot PNG image
plot_png <- function(f)
{
img <- readPNG(f)
rimg <- as.raster(img) # raster multilayer object
plot(NULL, xlim=c(0,1), ylim=c(0,1), xlab = "", ylab = "",
asp=1, frame=F, xaxt="n", yaxt="n")
rasterImage(rimg, 0, 0, 1, 1)
}
# create rgl snapshot with random rotation and
# corresponding lattice wireframe plot
lattice_plus_rgl_plot <- function()
{
# rgl plot random rotation
persp3d(volcano, col = "green3")
theta <- sample(-180:180, 1)
phi <- sample(-90:90, 1)
view3d(theta, phi, fov=40)
v <- rgl_to_lattice_viewpoint()
f <- tempfile(fileext = ".png")
rgl.snapshot(f)
rgl.close()
# lattice plot
f2 <- tempfile(fileext = ".png")
png(f2)
print(wireframe(volcano, screen = v))
dev.off()
# plot both
plot_png(f)
plot_png(f2)
}
# CREATE SOME PLOTS
library(rgl)
library(lattice)
library(png)
par(mfrow=c(3,2), mar=c(0,0,0,0))
replicate(3, lattice_plus_rgl_plot())
धन्यवाद! :) मैंने अपनी पोस्ट (अद्यतन 1) संपादित की जहां मैंने आपके द्वारा सुझाए गए रूपांतरण की कोशिश की। ऐसा लगता है कि मैंने कोई गलती नहीं की है। –