红雀对象的标记/着色 elements/segments

labeling/ coloring elements/segments of a linnet object

我有 3 个与 spatstat 中的图相关的问题:

  1. 如何标记红雀的片段。例如只是元素的 id
  2. 如何在图上标记附加到 linnet 段的协变量
  3. 如何控制图中红雀的一段宽度基于:协变量,或者例如我希望段的厚度与网络上点过程在该段上实现的点数成比例。因此,如果一个过程在一条线段上生成 10 个点,在第二条线上生成 5 个点,我想绘制第一条线段比第二条线段宽两倍。

我在书中找到了示例 - 空间点模式 - 但它们表明使用图像或内核密度来控制段的宽度。我正在将 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)

谢谢

您可以通过创建 class linfun.

的合适函数来完成所有事情

以网络L <- simplenet.

为例

对于问题 1:

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

函数f returns包含指定点的段的段ID号。这个数字从 1nsegments(L)

对于问题 2,假设您有一个向量 Z 给出网络每个段的协变量值(假设每个段的协变量值是常数)。我举个例子Z <- runif(nsegments(L))。然后

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

对于问题 3,

 plot(g, style="width")

参见help(plot.linfun)help(plot.linim)(基本上plot.linfun将函数转换为像素图像,然后调用plot.linim)。