ppp 图中的图例
Legend in ppp plot
我正在使用 spatstat 包和 ppp 函数创建基于 x-y 位置的树木空间地图。我已经能够做到这一点,每个点的大小都基于树的直径。我无法做的,我希望能在这里找到一些帮助,是创建一个图例,让我能够展示这些不同的圆圈,并将 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")
图中的每个物种都有相似的结构(对于西部铁杉,代码是相同的...)
谢谢!
首先使用 superimpose
将所有数据收集到一个 ppp
对象中。例如,如果您有花旗松 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)
}
最后把dmap
和smap
这两个符号图画在你想要的地方,用plot(dmap, add=TRUE, xlim=..., ylim=...)
等等。
将来这将是自动化的,但尚未实现。
我正在使用 spatstat 包和 ppp 函数创建基于 x-y 位置的树木空间地图。我已经能够做到这一点,每个点的大小都基于树的直径。我无法做的,我希望能在这里找到一些帮助,是创建一个图例,让我能够展示这些不同的圆圈,并将 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")
图中的每个物种都有相似的结构(对于西部铁杉,代码是相同的...)
谢谢!
首先使用 superimpose
将所有数据收集到一个 ppp
对象中。例如,如果您有花旗松 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)
}
最后把dmap
和smap
这两个符号图画在你想要的地方,用plot(dmap, add=TRUE, xlim=..., ylim=...)
等等。
将来这将是自动化的,但尚未实现。