有没有办法将从 Spatstat 的 K 函数导出的图转换为 ggplot 或 grob?
Is there a way to convert the plot derived from Spatstat's K function into a ggplot or grob?
我正在尝试使用 ggpubr 的 ggarrange 从 spatstat 创建 Ripley's K 函数的多个图,即我使用 Kest() 计算 Ripley's K 5 个景观,然后将它们一起绘制。如:
kk1plot<-plot(Kest(landscape))
然而,当我尝试使用 return 时出现错误“无法将 class data.frame 的对象转换为 grob”:
k1<-ggarrange(kk1plot,kk2plot,kk3plot,kk4plot,kk5plot,nrow=3,ncol=2)
同样,当我使用 patchwork 和代码时,我 return 出现错误“只知道如何添加 ggplots and/or grobs”:
k1<-wrap_plots(list(kk1plot,kk2plot,kk3plot,kk4plot,kk5plot),nrow=3,ncol=2)
谁知道我如何将多个 Ripley's K 函数的输出绘制为一个图?即,将 spatstat 的 Kest() 的输出转换为可以使用上述代码行之一进行操作的图?
一种方法是使用 ggplotify::as.grob
将绘图捕获为 grob 对象。
然后您可以使用 ggpubr::ggarange
绘制它。
正确的语法是 as.grob(~ ...)
用 plot 函数替换 ...
。
library(ggplotify)
library(ggpubr)
library(spatstat)
for(i in 1:5){
varname <- paste0("kk",i,"plot")
assign(varname,
as.grob(~plot(Kest(rMatClust(kappa=5,r=0.1,mu=100)),
main = paste("Plot",i),
cex.axis = 0.5, cex.main = 0.6,
legendargs = list(cex = 0.2)))
)
}
ggarrange(kk1plot,kk2plot,kk3plot,kk4plot,kk5plot,nrow=3,ncol=2)
spatstat 包使用基本图形。绘制多个的内置方式
估计的 K 函数如下所示。
Kest
的返回输出是一个 data.frame
,具有不同的估计值
列,以便您可以自己使用相关美学使用 ggplot 绘制它。
library(spatstat)
X1 <- rpoispp(100)
X2 <- rpoispp(100)
X3 <- rpoispp(100)
X4 <- rpoispp(100)
X5 <- rpoispp(100)
Xlist <- solist(X1, X2, X3, X4, X5)
plot(Xlist, main = "", main.panel = "")
Klist <- lapply(Xlist, Kest)
Klist <- as.anylist(Klist)
plot(Klist, main = "", main.panel = "")
我正在尝试使用 ggpubr 的 ggarrange 从 spatstat 创建 Ripley's K 函数的多个图,即我使用 Kest() 计算 Ripley's K 5 个景观,然后将它们一起绘制。如:
kk1plot<-plot(Kest(landscape))
然而,当我尝试使用 return 时出现错误“无法将 class data.frame 的对象转换为 grob”:
k1<-ggarrange(kk1plot,kk2plot,kk3plot,kk4plot,kk5plot,nrow=3,ncol=2)
同样,当我使用 patchwork 和代码时,我 return 出现错误“只知道如何添加 ggplots and/or grobs”:
k1<-wrap_plots(list(kk1plot,kk2plot,kk3plot,kk4plot,kk5plot),nrow=3,ncol=2)
谁知道我如何将多个 Ripley's K 函数的输出绘制为一个图?即,将 spatstat 的 Kest() 的输出转换为可以使用上述代码行之一进行操作的图?
一种方法是使用 ggplotify::as.grob
将绘图捕获为 grob 对象。
然后您可以使用 ggpubr::ggarange
绘制它。
正确的语法是 as.grob(~ ...)
用 plot 函数替换 ...
。
library(ggplotify)
library(ggpubr)
library(spatstat)
for(i in 1:5){
varname <- paste0("kk",i,"plot")
assign(varname,
as.grob(~plot(Kest(rMatClust(kappa=5,r=0.1,mu=100)),
main = paste("Plot",i),
cex.axis = 0.5, cex.main = 0.6,
legendargs = list(cex = 0.2)))
)
}
ggarrange(kk1plot,kk2plot,kk3plot,kk4plot,kk5plot,nrow=3,ncol=2)
spatstat 包使用基本图形。绘制多个的内置方式
估计的 K 函数如下所示。
Kest
的返回输出是一个 data.frame
,具有不同的估计值
列,以便您可以自己使用相关美学使用 ggplot 绘制它。
library(spatstat)
X1 <- rpoispp(100)
X2 <- rpoispp(100)
X3 <- rpoispp(100)
X4 <- rpoispp(100)
X5 <- rpoispp(100)
Xlist <- solist(X1, X2, X3, X4, X5)
plot(Xlist, main = "", main.panel = "")
Klist <- lapply(Xlist, Kest)
Klist <- as.anylist(Klist)
plot(Klist, main = "", main.panel = "")