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

#r #plot #subplot #spatstat

#r #график #подзаголовок #spatstat

Вопрос:

У меня есть данные, которые содержат информацию о подзаголовках с разными номерами и соответствующих им типах видов (более 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 для точек каждого подзаголовка в окне общего графика (big).

  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 (), как показано ниже, но она разделила мой график на неравные подзаголовки. Некоторые из них являются квадратными, другие — traingle и т.д., Которые мне не нужны. Я хочу, чтобы все подзаголовки были квадратичными одинакового размера (разделите его линиями, параллельными каждой стороне). Можете ли вы кто-нибудь помочь мне в этом?

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

Спасибо!

Комментарии:

1. Пожалуйста, предоставьте некоторые данные и пример кода, чтобы мы могли вам помочь. Если вы не можете поделиться своими фактическими данными, используйте имитированный или встроенный набор данных, чтобы проиллюстрировать вашу проблему и то, что вы пробовали до сих пор.

2. я отредактировал пример фрейма данных выше. Спасибо!

3. Извините, но я все еще думаю, что вам нужно задать вопрос получше. Вы просто предоставляете 9 точек в формате, который я не могу легко прочитать в R. Возможно, попробуйте использовать dput для вас данные или даже лучше (намного лучше) создайте полностью воспроизводимый пример с рисунками и подробно объясните. Я настоятельно рекомендую пакет reprex < reprex.tidyverse.org > где вы можете добавить аргумент venue = "so" : Просто скопируйте весь скрипт в буфер обмена и запустите reprex(venue="so") . После этого вставьте результат в свой вопрос здесь. Также подсказкой может быть выравнивание данных по осям с помощью rotate .

4. хорошо, я попробую это. Спасибо!

Ответ №1:

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

 > 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))
  

Комментарии:

1. Спасибо, Нишан. после того, как я разделю его, я собираюсь применить множество функций к каждому графику и вернуть множество выходных данных.

Ответ №2:

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

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

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

где p.patt находится ваш шаблон точек.