是否可以在 Rstudio 中使用 SpatStat 向 3D 点模式添加标记?

问题描述

我正在使用 spatstat 软件来分析单元格之间的空间关系。我过去曾将其用于 2D,并且很好。我现在正在使用它对共焦图像进行 3D 分析。

我的问题是我无法用不同的标记绘制生成的点图案。我能够为每个点分配标记(单元格类型)并绘制 3D 点模式。然而,这些标记不会作为不同的字符出现在情节上。

Series6 <-pp3(Series6[,5],Series6[,6],7],Box3(c(0,775),c(0,30)),marks = Series6[,8])

结果图:3D Plot

我已经尝试过使用 2D 点图案,它可以很好地为每个标记显示不同的字符。这让我认为标记功能与 3D 点模式不兼容。如果有人有任何提示,我将不胜感激。

解决方法

三维点图案(类 pp3)可以有标记。您的代码已成功为这些点分配标记。您可以通过输入 head(as.data.frame(Series6)) 来检查这一点,它会显示前几个点的坐标和标记。

问题在于 plot 方法 plot.pp3 不显示标记。此功能尚未实现。

我会将这个问题作为 spatstat 的功能请求。

同时,您可以通过将点模式拆分为具有不同标记的子集(假设标记是分类的)并依次绘制每个子集来获得所需的效果。这是一个函数:

plotbymark <- function(X,cols=NULL,chars=NULL,main="") {
   require(spatstat)
   stopifnot(is.pp3(X))
   stopifnot(is.multitype(X))
   Y <- split(X,un=TRUE)
   m <- length(Y)
   mm <- seq_len(m)
   if(is.null(cols)) cols <- mm
   if(is.null(chars)) chars <- mm
   for(i in mm) {
      plot(Y[[i]],col=cols[i],pch=chars[i],add=(i > 1),main=main)
   }
   explain <- data.frame(type=names(Y),col=cols,pch=chars)
   return(invisible(explain))
 }