3
我一直在研究R中一個相當複雜的圖表。我有一個線框,其中有一個曲面,點分佈在X,Y,Z空間中。在表面之下和之上)。在R中使用點陣和線框在曲面下創建點「外觀」
問題是,情節不會「看起來」像他們在表面之下。
我想弄清楚如何最好地可視化這個圖表,使點看起來在表面下。對於線框&雲一些示例代碼來自這裏:R-List Posting
在示例代碼:
library(lattice)
surf <-
expand.grid(x = seq(-pi, pi, length = 50),
y = seq(-pi, pi, length = 50))
surf$z <-
with(surf, {
d <- 3 * sqrt(x^2 + y^2)
exp(-0.02 * d^2) * sin(d)
})
g <- surf
pts <- data.frame(x =rbind(2,2,2), y=rbind(-2,-2,-2), z=rbind(.5,0,-.5))
wireframe(z ~ x * y, g, aspect = c(1, .5),
drape=TRUE,
scales = list(arrows = FALSE),
pts = pts,
panel.3d.wireframe =
function(x, y, z,
xlim, ylim, zlim,
xlim.scaled, ylim.scaled, zlim.scaled,
pts,
...) {
panel.3dwire(x = x, y = y, z = z,
xlim = xlim,
ylim = ylim,
zlim = zlim,
xlim.scaled = xlim.scaled,
ylim.scaled = ylim.scaled,
zlim.scaled = zlim.scaled,
...)
xx <-
xlim.scaled[1] + diff(xlim.scaled) *
(pts$x - xlim[1])/diff(xlim)
yy <-
ylim.scaled[1] + diff(ylim.scaled) *
(pts$y - ylim[1])/diff(ylim)
zz <-
zlim.scaled[1] + diff(zlim.scaled) *
(pts$z - zlim[1])/diff(zlim)
panel.3dscatter(x = xx,
y = yy,
z = zz,
xlim = xlim,
ylim = ylim,
zlim = zlim,
xlim.scaled = xlim.scaled,
ylim.scaled = ylim.scaled,
zlim.scaled = zlim.scaled,
...)
})
看我的例子,在點的點是在實際的垂直線其中X,Y =(2,-2),z從.5到-5。
但是,在我眼中,第三點看起來並不像表面之下,看起來像座標爲(2,-3,0)。
這只是我的眼睛誤解?
有沒有人有關於如何讓我的觀點看起來更「3D」的建議?也許是通過在表面上使用某種透明度來使點看起來像「表面下」的顏色?
我試着讓點的顏色不同(表面下方是紅色,表面下方是藍色),但這對圖形沒有多大幫助。
這將是更直接使用RGL包,裏面有透明,採光充分支持,以及一個場面,對象是已知的建設在特定曲面的前面或後面 – 2011-12-22 18:21:11
如何將上面的代碼轉換爲使用rgl?我以前沒有用過它.. – user918967 2011-12-22 18:24:22
嗨,本,我完全被rgl搞糊塗了。坦率地說,我不知道從哪裏開始。你可以給我一些關於移動到rgl的指針嗎?謝謝 ! – user918967 2011-12-22 19:29:50