2016-12-08 4 views
-1

So drei Gruppen von Daten in R mit dem folgenden Befehl Ich habeGibt es eine Möglichkeit, eine Grenze um eine Gruppe von Punkten in R zu zeichnen?

plot(1, 1, xlim = c(min(al_comm$PC1),max(al_comm$PC1)), ylim = c(min(al_comm$PC2),max(al_comm$PC2)), type = 'n', xlab = '', ylab = '') 
points(DW_PC1,DW_PC2,pch = 0, col = "red", cex = 1.1) 
points(WW_PC1,WW_PC2,pch = 10, col = "blue", cex = 1.1) 
points(DS_PC1,DS_PC2,pch = 5, col = "magenta", cex = 1.1) 

Jetzt aufgetragen ich durch Ziehen einer Linie jeder dieser drei Gruppen einschließen möchten (oder eine Kurve) um sie herum. Gibt es eine Möglichkeit, das in R zu tun?

Ich habe die folgende Funktion gefunden (https://chitchatr.wordpress.com/2011/12/30/convex-hull-around-scatter-plot-in-r/), die eine Linie um die Punkte zeichnet. Gibt es eine Möglichkeit, es noch mehr auszugleichen und es weicher zu machen?

Plot_ConvexHull<-function(xcoord, ycoord, lcolor){ 
    hpts <- chull(x = xcoord, y = ycoord) 
    hpts <- c(hpts, hpts[1]) 
    lines(xcoord[hpts], ycoord[hpts], col = lcolor) 
} 
+1

Blick auf 'chull' – rawr

+1

Haben Sie das gesehen? http://stackoverflow.com/questions/13577918/r-plotting-a-curve-around-a-set-of-points/13579969 – thelatemail

+1

Ich habe gerade eine Antwort auf die verknüpfte Frage hinzugefügt. Denke darüber nach, dies als Täter zu schließen ... –

Antwort

1

OK, hier ist eine andere Lösung. Es benutzt die konvexe Hülle, streckt sie aber etwas weiter aus (weg vom Schwerpunkt).

Beispiel:

x = rnorm(100) 
y = rnorm(100) 
Dat = data.frame(x,y) 
plot(Dat, xlim=c(-3.5, 3), ylim=c(-3,3)) 

Mx = mean(x) 
My = mean(y) 
CH = chull(Dat) 
BumpX = x[CH] + 0.1*(x[CH]-Mx) 
BumpY = y[CH] + 0.1*(y[CH]-My) 
polygon(BumpX, BumpY) 

enter image description here

Verwandte Themen