разделить непрямоугольный участок на подзаголовки в пакете spatstat в R

У меня есть данные, которые содержат информацию о участках с разными номерами и соответствующих типах видов (более 3 видов на каждом участке). У каждого вида есть координаты X и Y.

> df
  subplot      species      X       Y
1       1     Apiaceae 268675 4487472
2       1  Ceyperaceae 268672 4487470
3       1     Vitaceae 268669 4487469
4       2  Ceyperaceae 268665 4487466
5       2     Apiaceae 268662 4487453
6       2 Magnoliaceae 268664 4487453
7       3 Magnoliaceae 268664 4487453
8       3     Apiaceae 268664 4487456
9       3     Vitaceae 268664 4487458

с этими данными я создал ppp для точек каждого участка в пределах окна общего графика (большого).

 grp <- factor(data$subplot)
 win <- ripras(data$X, data$Y)
 p.p <- ppp(data$X, data$Y, window = window, marks = grp)

Теперь я хочу разделить сюжет на равные участки 3 x 3, потому что есть 9 участков. Общий график не прямоугольный, когда я рисую, он похож на ромбовидную форму.

Я мог бы использовать функцию quadrats(), как показано ниже, но она разделила мой график на неравные участки. Некоторые из них квадратные, другие - треугольные и т. Д., Которые мне не нужны. Я хочу, чтобы все подзаголовки были квадратами одинакового размера (разделите их линиями, параллельными каждой стороне). Можете ли вы помочь мне в этом?

 divide <-quadrats(p.patt,3,3)
 plot(divide)

Благодарю вас!


person R starter    schedule 17.03.2019    source источник
comment
Пожалуйста, предоставьте некоторые данные и пример кода, чтобы мы могли вам помочь. Если вы не можете поделиться своими фактическими данными, используйте смоделированный или встроенный набор данных, чтобы проиллюстрировать свою проблему и то, что вы пробовали до сих пор.   -  person Ege Rubak    schedule 18.03.2019
comment
я отредактировал пример фрейма данных выше. Благодарю вас!   -  person R starter    schedule 18.03.2019
comment
Извините, но я все же думаю, что вы должны задать вопрос получше. Вы просто предоставляете 9 баллов в формате, который я не могу легко прочитать в R. Может быть, попробовать использовать dput для ваших данных или даже лучше (намного лучше) сделать полностью воспроизводимый пример с цифрами и подробно объяснить. Я настоятельно рекомендую пакет reprex ‹reprex.tidyverse.org›, где вы можете добавить аргумент venue = "so": просто скопируйте весь скрипт в буфер обмена и запустите reprex(venue="so"). Затем вставьте результат в свой вопрос здесь. Также подсказка может состоять в том, чтобы выровнять данные по осям, используя rotate.   -  person Ege Rubak    schedule 18.03.2019
comment
хорошо, я попробую. спасибо!   -  person R starter    schedule 18.03.2019


Ответы (2)


Не могли бы вы разбить холст сюжета на 3x3, а затем запустить каждый сюжет?

> par(mfrow=c(3,3))
> # run code for plot 1
> # run code for plot 2
  ...
> # run code for plot 9

Чтобы вернуться к одному сюжету на типе холста

> par(mfrow=c(1,1))
person NM_    schedule 17.03.2019
comment
Спасибо, Нишан. после того, как я разделю его, я собираюсь применить множество функций к каждому графику и вернуть много выходных данных. - person R starter; 18.03.2019

Это вопрос о пакете spatstat.

Вы можете использовать функцию quantess, чтобы разделить окно на плитки одинаковой площади. Если вы хотите, чтобы границы плитки были вертикальными линиями, и вы хотите 7 плиток, используйте

B <- quantess(Window(p.patt), "x", 7)

где p.patt — ваш точечный паттерн.

person Adrian Baddeley    schedule 19.03.2019