2016-04-14 133 views
0

我遇到了R包rgl(版本0.95.1441)的問題,特別是我無法從文檔的「示例」部分重現代碼該scene3d rgl功能:無法通過rgl的plot3d()函數繪製rglscene對象R包

http://www.inside-r.org/packages/cran/rgl/docs/plot3d.rglscene

我正在Windows 8

open3d() 
z <- 2 * volcano  # Exaggerate the relief 
x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N) 
y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W) 
persp3d(x, y, z, col = "green3", aspect = "iso") 

s <- scene3d() 
# Make it bigger 
s$par3d$windowRect <- 1.5*s$par3d$windowRect 
# and draw it again 
plot3d(s) 

我能夠愈傷組織後產生3D圖像下使用的3.2.4版本和R工作室0.99.892 [R ng persp3d函數,我可以將rglscene對象保存到變量s中。但是,在執行本列表的最後一個字符串之後,出現了一個非常狹窄的窗口,無法查看它是否包含任何內容。我如何解決它?

回答

2

s中沒有par3d組件。它是s $ rootSubscene的一部分。 (這不是它如何記錄,但它是這樣的。)

如果你想要場景的大小加倍,你需要改變兩件事:windowRect和視口。所以這適用於我:

open3d() 
z <- 2 * volcano  # Exaggerate the relief 
x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N) 
y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W) 
persp3d(x, y, z, col = "green3", aspect = "iso") 

s <- scene3d() 
# Make it bigger 
par3d <- s$rootSubscene$par3d 
par3d$windowRect <- 1.5*par3d$windowRect 
par3d$viewport <- 1.5*par3d$viewport 
s$rootSubscene$par3d <- par3d 

# and draw it again 
plot3d(s) 
+0

@ user2554330非常感謝你! – Denis

+0

此外,從我的麻煩的原因之一是多編輯'''變量。只有當我在創建之前明確地刪除變量(我多次使用代碼進行播放,所以我也多次創建了所提到的變量),代碼才能正確工作。例如:'... rm(s)s < - scene3d()...'而不是''s < - scene3d()...的簡單覆蓋''我不明白爲什麼,但是對於我這是一個重要的方面。 – Denis