Окраска перекрытия участков в R - PullRequest
0 голосов
/ 29 января 2019

Я хочу визуализировать перекрытие нескольких фигур в R и выделить пересечение графически.

Мне удалось нарисовать круги на графике, однако мне не ясно, являются ли они на самом деле объектами, которые я могу затем использовать дальше, или они являются только нарисованными объектами

Это рисует круги ...

plot(1, type="n", xlab="Niche dimension 1", ylab="Niche dimension 2", main="Niche properties", xlim=c(0,20), ylim=c(0,20))
sp1<-draw.circle(10,10,3, border="darkgreen", lwd=2,col="darkgreen", density=20, angle=90)
sp2<-draw.circle(8,8,2, border="red", lwd=2, col="red", density=20, angle=180)
legend(15,3, legend=c("species 1", "species 2", "niche overlap"), fill=c("darkgreen","red",), cex=0.6)

Теперь я ожидаю, что какой-нибудь пакет сможет пересечь 2 круга в объект, который я затем смогу нарисовать и покрасить по-разному.Однако я еще не нашел тот, который действительно работает ...

1 Ответ

0 голосов
/ 29 января 2019

Вы можете использовать пространственные функции для создания кругов в качестве объектов, а затем продолжать использовать пространственный подход для поиска пересечений и т. Д. Для построения графиков.

Вот пример.

library(sp)
library(rgeos)
point1 = data.frame(x=1,y=1)
coordinates(point1) = ~ x + y
circle1 = gBuffer(point1, width = 10)
point2 = data.frame(x=3,y=3)
coordinates(point2) = ~ x + y
circle2 = gBuffer(point2, width = 10)

overlap = gIntersection(circle1, circle2)
circle1Only = gDifference(circle1, circle2)
circle2Only = gDifference(circle2, circle1)
all = gUnion(circle1, circle2)

plot(all) # make sure all pieces are included
plot(circle1Only, col = 'red', add = T)
plot(circle2Only, col = 'blue', add=T)
plot(overlap, col = 'green', add= T)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...