2017-12-27 12 views
0

Wir müssen mehrere Flächen in R plotten, wobei nacheinander die entsprechenden Plotbefehle (unter Verwendung der Bibliothek plot3D) aufgerufen werden Plotstil). Jede Oberfläche besteht aus Daten und enthält Daten in verschiedenen Bereichen. Wir können jede Oberfläche durch ein Farbschema Einfärben wie folgt:R: Einstellen eines einheitlichen benutzerdefinierten Farbschemas für mehrere überlagerte Plots im plot3D-Paket

Wir nehmen einige gefälschte Daten als XYZ-Punkte:

out.trial<-read.csv(text="1, 1, 30 
1, 2, 35 
1, 3, 29 
1, 4, 33 
2, 1, 31 
2, 2, 32 
2, 3, 34 
2, 4, 35 
3, 1, 28 
3, 2, 29 
3, 3, 29.5 
3, 4, 31 
4, 1, 30 
4, 2, 31 
4, 3, 33 
4, 4, 33",header=FALSE) 

Nun bauen zwei wir farbig „Oberflächen“ als Streudiagramme. Die zweite „Oberfläche“ wird hergestellt, indem einfach alle Werte Verschiebung um 20.

-Bibliothek („Plot3D“)

scatter3D(out.trial$V1, out.trial$V2, -out.trial$V3, phi = 0, bty = "g", 
col = gg.col(100,alpha=0.8), pch = 18, ticktype="detailed", xlab = "lon", 
ylab ="lat", zlab = "depth",colvar=-out.trial$V3,zlim=c(-65,-25)) 

    scatter3D(out.trial$V1, out.trial$V2, -20-out.trial$V3, phi = 0, bty = 
"g", col = gg.col(100,alpha=0.8), pch = 18, 
colvar=-20-out.trial$V3,zlim=c(-65,-25), add=TRUE) 

    plotdev() 

3D plot with two colored surfaces

Aber eine Standardfarbschlüsselfunktion in einem Plot Befehl aufgerufen Farben zuweist Standardmäßig für jede Oberfläche aus dem Min/Max-Bereich der Variablen. So werden zwei Oberflächen mit unterschiedlichem Wertebereich auf die gleiche Weise gefärbt. Im obigen Beispiel enthält die erste Oberfläche (Gruppe von Streupunkten) Werte im Bereich von 28 bis 35, die zweite Oberfläche von 48 bis 55, und beide sind in einer Palette von blau bis braun gefärbt. Ich muss das Farbschema (in diesem Fall) von 28 bis 55 für jede Oberfläche einstellen. Die oberen Punkte sind also gelblich und die unteren Punkte sind bläulich. Wie kann die Richtlinie colvar= geändert werden, um einen benutzerdefinierten Bereich für die Zuweisung von Farben festzulegen?

Antwort

0

Die Lösung besteht darin, in allen Zeichenanweisungen den Parameter clim= zu verwenden. Als nächstes müssen wir das Anzeigen des Farbmenüs in allen Plotbefehlen bis auf eins unterdrücken. Der Wertebereich gefärbt in dem Beispiel werden soll, von -55 bis -29, daher clim=c(-55,-29):

scatter3D(out.trial$V1, out.trial$V2, -out.trial$V3, phi = 0, bty = "g", 
col = gg.col(100,alpha=0.8), pch = 18, ticktype="detailed", xlab = "lon", 
ylab ="lat", zlab = "depth",colvar=-out.trial$V3,zlim=c(-65,-25),clim=c(-55,-29)) 

scatter3D(out.trial$V1, out.trial$V2, -20-out.trial$V3, phi = 0, bty = 
"g", col = gg.col(100,alpha=0.8), pch = 18, 
colvar=-20-out.trial$V3,zlim=c(-65,-25), add=TRUE, clim=c(-55,-29), colkey=FALSE) 

plot with 2 surfaces and one coloring scheme

Verwandte Themen