问题描述
我正在使用 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))
}