#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
находится ваш шаблон точек.