Можно ли добавлять метки к трехмерному точечному массиву с помощью SpatStat в Rstudio?

Я использую программу spatstat для анализа пространственных отношений между ячейками. Я использовал это в прошлом для 2D, и это было нормально. Сейчас я использую его для трехмерного анализа конфокальных изображений.

Моя проблема в том, что я не могу построить результирующий точечный узор с разными отметками. Я могу присвоить метки (тип ячейки) каждой точке и построить трехмерный точечный узор. Однако метки не появляются на сюжете как разные персонажи.

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

Полученный график: 3D-график.

Я пробовал использовать его с двумерными точечными узорами, и он отлично работает, отображая разные символы для каждой отметки. Это заставляет меня думать, что функция меток несовместима с точечными 3D-образцами. Буду признателен, если у кого-нибудь есть подсказки.


person Liam Barry Carroll    schedule 13.01.2021    source источник
comment
Добро пожаловать в SOF, ?spatstat::pp3, Использование: pp3 (x, y, z, ..., mark = NULL), и говорит о них, mark: Необязательно. Вектор, фрейм данных или гиперфрейм значений отметок, связанных с точками. Итак, совместим с 3D точечными паттернами / объектами pp3. Не работал в 2D, поэтому я не ожидал, что marks дополнительно передаст в сюжете. Может, добавить 2Д и искать вот такое в 3Д? Судя по тому, сколько раз exhaustively используется в документации пакета, это ожидается.   -  person Chris    schedule 14.01.2021


Ответы (1)


Трехмерный точечный узор (класс 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))
 }
   
person Adrian Baddeley    schedule 14.01.2021
comment
Эта функция работала очень хорошо. Спасибо за вашу помощь и за SpatStat :) - person Liam Barry Carroll; 14.01.2021