2016-12-08 2 views
-1

Так я построены три групп данных в R с помощью следующей командыЕсть ли способ нарисовать границу вокруг группы точек в R?

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) 

Теперь я хочу вложить каждый из этих трех групп по нарисованной линии (или кривой) вокруг них. Есть ли способ сделать это в R?

Я нашел следующую функцию (https://chitchatr.wordpress.com/2011/12/30/convex-hull-around-scatter-plot-in-r/), которая рисует линию вокруг точек. Есть ли способ компенсировать это еще больше и сделать его более гладким?

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

взгляд на 'chull' – rawr

+1

Вы видели это один? http://stackoverflow.com/questions/13577918/r-plotting-a-curve-around-a-set-of-points/13579969 – thelatemail

+1

Я просто добавил ответ на связанный вопрос. Думая о закрытии этого как обмана ... –

ответ

1

ОК, это другое решение. Он использует выпуклый корпус, но просто растягивает его немного дальше (от центра тяжести).

Пример:

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

 Смежные вопросы

  • Нет связанных вопросов^_^