2016-06-14 15 views
2

Ich bin kein R-Pro, Autodidakt- danke für Ihre Hilfe!Verwenden von skipRedraw in R {rgl} beim Drehen von plot3d

Ich habe den folgenden Code zu meiner Zufriedenheit herausgefunden, der mir ein 3D-Diagramm meiner Daten gibt und ich kann es automatisch drehen. Ich möchte jedoch das automatische Neuzeichnen der Achsen stoppen, während es sich dreht. Ich habe viele Ressourcen mit par3d (skipRedraw = TRUE) gefunden, aber ich kann nicht herausfinden, wie man es in meinen Code einbaut, es ist alles ein bisschen jenseits von mir.

Auch, (ich würde diesen hier aufgeben, aber da ich sowieso frage) Ich würde auch gerne in der Lage sein, dass die Achsenbeschriftungen neben den Achsenmarkierungen bleiben (und nicht gegenüber /auf der anderen Seite). Aber das ist zweitrangig.

Vielen Dank im Voraus!

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

Der zweite Teil Ihrer Frage beantwortet hier: . Es ist nicht einfach. Ich bin nicht sicher, was Sie wollen, und Ihr Code kann nicht von anderen ausgeführt werden, so kann ich nicht mit dem ersten Teil helfen. – user2554330

Antwort

0

Es ist einfach, das automatische Neuzeichnen der Achsen zu stoppen. Wenn Sie Bbox-Achsen (Standard) verwenden, werden sie neu gezeichnet. Sie verwenden also nur feste Positionsachsen. (Edited: Ich könnte Ihre quiestion falsch verstehen.)

Hier mein Beispiel ist (unter Verwendung von Daten 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

Ich glaube nicht, dass das eigentlich das ist, was das OP machen will. Ich denke, das Objekt in der Box drehen zu lassen, ohne dass es sich bewegt, ist das, was gewünscht wird. –

+0

Bevor ich antwortete, hätte ich Manieren gelernt. Danke, dass du es mir merken lässt !!! Was Ihren ersten Kommentar betrifft, kann ich nicht sicher sagen ..., aber Sie haben vielleicht Recht. – cuttlefish44

+0

Er ist nicht klar, aber sonst wäre es zu einfach. Ich denke, man könnte "par3dinterp" modifizieren, um die Modellierungsmatrix dafür zu interpolieren, aber ich bin nicht dazu gekommen, das zu versuchen. –