2015-11-04 82 views
1

我的數據集是一個三維陣列(30,15,4),表示在四個不同深度(0.2(layer1),0.4(layer2),0.6(layer3),0.8( layer4))。因此,我試圖獲得4層的3d圖。到目前爲止,我已經使用了slice3Drgl函數。然而,我已經意識到,在我得到的圖中,第二層和第三層看起來相同(來自0.4深度的T數據被繪製兩次),並且第四層(圖上的上層)顯示屬於0.6深度的T數據。 這是我的代碼:slice3Drgl R繪製了幾個切片

dd<-array(d$T,dim=c(30,15,4)) 

x = seq(0.126,3.780, by=0.126) 
y=seq(0.125,1.875,by=0.125) 
z = seq(0.2,0.8,by=0.2) 
grid<-mesh(x,y,z) 
colvar<-with(grid,dd) 
col=jet.col(100) 
slice3Drgl (x, y, z, xs=NULL, ys=1,zs=c(0.2,0.4,0.6,0.8),colvar = colvar, col=col, clim = c(-1.392,0),theta = 60,smooth=TRUE, 
      colkey(clim = c(-1.392,0),at = do.breaks(c(-1.392,0), 2))) 

這是我得到的情節:

enter image description here

我檢查了數據和其正確的,沒有重複的T數據在第二和第三層。 另外定義時ZS爲:

zs<-z[seq(1,length(z),len=4)] 

3D圖改善了一點。我可以在1,2,3層看到正確的T數據。但是第四層仍然顯示對應0.6深度的T數據,而不是0.8深度(第四層)。

希望我的問題或多或少清楚,有人可以給我一些有用的見解, 不幸的是,網絡中沒有太多關於此功能的信息。

由於提前,

最佳, Amaia

回答

0

此錯誤源於與其中包文件提供沒有信息ZS參數。這裏是一個解決辦法,我在過去使用:

dt<-seq(0.01,27, by=0.01) 
    dd<-array(dt,dim=c(30,15,5)) 
    x = seq(0.126,3.780, by=0.126) 
    y=seq(0.125,1.875,by=0.125) 
    z = seq(0.2,1.0,by=0.2) 
    grid<-mesh(x,y,z) 
    colvar<-with(grid,dd) 
    col=jet2.col(100) 
    slice3Drgl (x, y, z, xs=NULL, ys=NULL,zs=z,zlim=c(0.2,0.8),colvar = colvar, col=col, clim = c(0,18),theta = 60,smooth=FALSE, 
     colkey(clim = c(0,18),at = do.breaks(c(0,18), 2))) 

基本上所有你需要的是通過設置zlim繪圖過程中添加虛擬ž層到數據,然後將其忽略。

我希望這會有所幫助。

+0

非常感謝!它工作完美:) – Amaia