2016-06-14 54 views
2

我不是R親,自學成才 - 感謝您的幫助!在旋轉plot3d時在R {rgl}中使用skipRedraw

我已經想出以下代碼讓我滿意,它給了我一個3D數據圖,我可以自動旋轉它。但是,我想停止軸旋轉時的自動重繪。我已經使用par3d(skipRedraw = TRUE)發現了許多資源,但我無法弄清楚如何將它合併到我的代碼中,這一切都超出了我的想象。另外,(我打算放棄這個,但是因爲我問了問題),我還希望能夠將軸標籤保留在軸刻度標記的旁邊(而不是在它的對面) /另一方面)。但這是次要的。

預先感謝您!

mydata<-read.csv(file=file.choose(),header=TRUE,row.names=1) 
mydata$Colour<-factor(mydata$ColourB,levels=c("Black","Blue","Red","Green","Yellow","Purple","Brown")) 
colourb<-as.character(mydata$ColourB) 
library(rgl) 
open3d() 
plot3d(mydata[,"Sr"], 
    mydata[,"Rb"], 
    mydata[,"Zr"], 
    xlab="Sr (ppm)", 
    ylab="Rb (ppm)", 
    zlab="Zr (ppm)", 
    pch=21, 
    col=colourb, 
    type="s", 
    radius=10 
) 
bgplot3d({ 
    plot.new() 
    title(main = 'Trace Elements', line = 1) 
}) 
play3d(spin3d(axis=c(0,0,1), rpm=10), duration=10) 
+0

你問題的第二部分是在這裏找到答案:。這並不容易。我不確定你想要發生什麼,並且你的代碼不能被其他人運行,所以我不能幫助第一部分。 – user2554330

回答

0

很容易停止軸的自動重繪。當您使用bbox-axes(默認)時,它們將被重繪。所以你只需要使用固定的位置軸。 (編輯:我可能會誤解你的quiestion。)

這是我的例子(使用數據trees):

open3d() 
plot3d(trees, type="s", radius=0.4, col="red", xlab="xxx", ylab="yyy", zlab="zzz", 
     axes=F) # not use bbox-axes 
axes3d(edges = c("x","y","z")) # draw fixed position axes 
box3d()      # if you need, draw full box 

bgplot3d({ 
    plot.new() 
    title(main = 'Trees', line = 1) 
}) 
play3d(spin3d(axis=c(0,0,1), rpm=10), duration=10) 


# PS: skipRedraw isn't what you think. 
plot3d(trees) 
par3d(skipRedraw = T) # you can't turn the graph by drag 
+0

我不認爲這實際上是OP想要做的。我認爲讓對象在盒子內旋轉而不移動是我們所期望的。 –

+0

在回答之前,我應該學會禮貌。謝謝你讓我意識到它!至於你的第一條評論,我不能肯定地說......但你可能是對的。 – cuttlefish44

+0

他不清楚,但否則會太容易。我想一個人可能會修改'par3dinterp'來插入建模矩陣來做到這一點,但還沒有到處去嘗試。 –