2017-01-03 9 views
0

의 세그먼트 :라벨은/착색 요소/I가 spatstat 플롯 3 개 관련 질문 가지고 붉은 가슴 방울새 객체

  1. 은 어떻게 붉은 가슴 방울새의 세그먼트를 레이블 않습니다. 예를 들어 요소의 ID입니다
  2. 플롯에서 linnet의 세그먼트에 연결된 공변량을 레이블로 지정하는 방법
  3. 공변량을 기준으로 플롯에서 linnet 세그먼트의 너비를 제어하는 ​​방법 또는 예를 들어 세그먼트의 두께가 네트워크상의 포인트 프로세스에서 해당 세그먼트에서 실현 된 포인트 수에 비례하기를 원합니다. 따라서 한 프로세스가 선분에 10 점, 두 번째 선분에 5 점을 생성한다면 두 번째 선분보다 두 배 넓은 첫 번째 선분을 그립니다.

예를 들어 Spatial Point Patterns에서 예제를 발견했지만 세그먼트의 너비를 제어하기 위해 이미지 또는 커널 밀도를 사용함을 나타냅니다. 불규칙한 프로세스를 위해 linfun을 사용하고 있는데 플롯에서 선의 색을 지정하거나 선의 폭을 제어하거나 선을 레이블링하는 방법을 찾지 못했습니다.

작은 사각형의 예 :

library(spatstat) 

v<-ppp(x=c(50,100,100,50), y=c(50,50,100,100),c(0,150), c(0,150)) #vertices 
edg<-matrix(c(1,2,3,4,2,3,4,1), ncol=2) #edges 
L<-linnet(v, edges=edg) #create a linnet 

z<-c(11,22,33,44) # create covariate 
Zfun <- linfun(function(x,y,seg,tp) { seg }, L) 

plot(Zfun) 

# I added some marks 
marks(x) <- runif(npoints(x), 3, 4) 

감사합니다

+0

당신이 이야기하는 세그먼트에 붙어있는'linnet'과 공변량의 예를 제공해주십시오. 또한 다른 점들의 수와 함께 작은'linnet'에'lpp'을 제공하십시오. 또한'linfun'을 제공합니다 ... –

+0

작은 예제를 추가했습니다 – BKS

답변

1

당신은 클래스 linfun의 적절한 기능을 만들어 모든 것을 할 수 있습니다.

예를 들어 네트워크 L <- simplenet을 예로 들자. 질문 1 들어

:

f <- linfun(function(x,y,seg,tp) { seg }, L) 
plot(f) 

지정된 지점을 포함하는 세그먼트의 세그먼트 ID 번호를 반환 f 기능. 이 번호는 1에서 nsegments(L)까지 이어집니다.

질문 2의 경우 벡터의은 공분산 값이 각 세그먼트에 대해 일정하다고 가정하고 네트워크의 각 세그먼트에 대해 공변량 값을 제공한다고 가정합니다. 예 : Z <- runif(nsegments(L))을 사용하겠습니다. 그런 다음 질문 3

g <- linfun(function(x,y,seg,tp) { Z[seg] }, L) 
plot(g) 

,

plot(g, style="width") 

help(plot.linfun)help(plot.linim)은 (기본적으로 plot.linfun는 픽셀의 이미지로 기능을 변환 한 다음 plot.linim 호출)를 참조하십시오.

+0

감사합니다. 당신의 제안을 따를 때, 그것은 색으로 범례를 만들고 각 부분에는 색이 지정됩니다. 실제로 '음모 자체에서 세그먼트에 레이블을 붙이고 싶습니다.' 나는 플롯 세그먼트를 따라 표시 할 텍스트 (공변량의 값, 실현 된 포인트의 값 또는 세그먼트 자체의 ID)를 의미합니다. 그게 가능할까요? Spatstat 플롯을 GIS 패키지 나 외부 GIS 프로그램으로 전송하는 대신 사용하고 싶습니다. – BKS

+0

OK, 선형 네트워크를 선분의리스트로 변환하려면'S <- as.psp (L)'을 사용하고, 각각의 중간 점의 위치를 ​​찾으려면'M

+0

이 질문에 대한 답변을 보내 주셔서 감사합니다. :) – BKS