2017-05-07 3 views
0

Ich verwende derzeit das Gitter-Paket in R, um eine Streudiagramm-Matrix zu erstellen, die Spool-Funktion verwendet. Meine Daten-Set besteht aus zwei Gruppen darin, markierten in zwei verschiedenen Spalten, die als solche:Verwenden Sie verschiedene Farben/Formen für Streudiagramm mit zwei Gruppen in R

PC1 PC2 PC3 Group1 Group2 
1 2 3 A  X 
1 2 3 B  X 
1 2 3 C  X 
1 2 3 D  X 
1 2 3 A  Y 
1 2 3 B  Y 
1 2 3 C  Y 
1 2 3 D  Y 
1 2 3 A  Z 
1 2 3 B  Z 
1 2 3 C  Z 
1 2 3 D  Z 

Ich kann die SPLOM Funktion erhalten zu verschiedenen Farben und Formen für eine der Gruppen zu verwenden, aber nicht für beide, mit dem folgenden Code:

splom(~pcVT[,1:3], data = pcVT, xlab = NULL, groups = Group1, pch = c(1,2,3), 
col = super.sym$col[1:3], panel = panel.superpose, 
key = list(points = list(pch = c(1,2,3),col = super.sym$col[1:3]),text = list(mylabels))) 

Wie kann ich es bekomme die beiden Gruppen für die Färbung und Formen zu verwenden - das heißt, ich will Gruppe1 basierend auf Farbe grafisch dargestellt werden, und Group2 basierend auf Form grafisch dargestellt werden. Alternativ, wenn splom das nicht kann, gibt es eine gute Möglichkeit, es mit gpplot2 zu machen?

Vielen Dank!

Antwort

0

Ihr Beispiel ist nicht reproduzierbar und Ihr Datensatz ist nicht sehr brauchbar. ich ein anderes gemacht ...

Hier ist eine Lösung mit Basis Grundstück:

d <- as.data.frame(princomp(iris[,1:4])$scores) 
d$Group1 <- iris$Species 
d$Group2 <- factor(sample(c("A","B","C"), 150, replace = TRUE)) 

mycols <- c("forestgreen", "gold", "dodgerblue") 

x11(width = 16/2.54, height = 12/2.54) 
pairs(d[,1:4], oma=c(3,3,6,3), 
     col = mycols[as.numeric(d$Group1)], pch = c(1:3)[as.numeric(d$Group2)], gap = 0) 
legend("top", col = mycols, legend = levels(d$Group1), pch = 20, 
     xpd = NA, ncol = 3, bty = "n", inset = 0.01, pt.cex = 1.5) 
legend("top", pch = 1:3, legend = levels(d$Group2), col = "black", 
     xpd = NA, ncol = 3, bty = "n", inset = -0.03) 

enter image description here

Wenn Sie eine ggplot Lösung wollen, erkunden Sie die GGally:ggpairs Möglichkeiten (Berechnung viel langsamer):

library(GGally) 
ggpairs(data=d, mapping = aes(color = Group1, shape = Group2), 
     columns = 1:4, legend = c(2,1)) 

enter image description here

Verwandte Themen