2

我正在使用 spatstat 包和 ppp 函数基于 xy 位置创建树木的空间图。我已经能够做到这一点,每个点的大小都基于树的直径。我没能做的,我希望在这里找到一些帮助,是创建一个图例,让我能够展示这些不同的圆圈,并在情节中包括 6 种树种。这是我正在使用的代码:

df <- subset(plots, plots$spp == "DF")  # Douglas-fir

dfx <- as.numeric(as.character(df$x))
dfy <- as.numeric(as.character(df$y))
dfd <- as.numeric(as.character(df$d))

dfp <- ppp(dfx, dfy, window = owin(c(0, 100), c(0, 100)),
                  unitname=c("metres","metres"), marks = dfd)
par(mar = c(2, 2, 2, 2))                                           
plot(dfp, main = "", cex = 0.8, markscale = 0.04, 
     bg = rgb(0.1,0.9,0.3,0.5), fg = "black")

我对情节中的每个物种都有类似的结构(西部铁杉和代码相同......)

谢谢!</p>

4

1 回答 1

0

首先使用 . 将所有数据收集到单个ppp对象中superimpose。例如,如果您有道格拉斯冷杉dfp和西部铁杉,whp那么

  X <- superimpose(DF=dfp, WH=whp)

创建一个点模式X,其中每个点都有两个标记值,即种类和直径。为方便起见,更改标记列名称:

  colnames(marks(X)) <- c("diameter", "species")   

接下来确定直径的绘图符号图(不绘制任何东西):

  dmap <- plot(subset(X, select=diameter), do.plot=FALSE)

接下来为不同的物种选择一组颜色,例如

  spec <- levels(marks(X)$species)
  scol <- c("red", "blue")
  smap <- symbolmap(inputs=spec, col=scol)

现在使用直径比例图以不同的颜色绘制物种:

  plot(Window(X), main="The main title")
  for(i in seq_along(spec)) {
     sy <- update(dmap, col=scol[i])
     Xi <- subset(X, species==spec[i], select=diameter)
     plot(Xi, add=TRUE, symap=sy)
  }

最后通过使用等将两个符号图dmapsmap在你想要的地方绘制出来plot(dmap, add=TRUE, xlim=..., ylim=...)

将来这将是自动化的,但尚未实施。

于 2016-09-23T02:56:27.213 回答