Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法将从Spatstat的K函数导出的绘图转换为ggplot或grob?_R_Plot_Spatstat - Fatal编程技术网

有没有办法将从Spatstat的K函数导出的绘图转换为ggplot或grob?

有没有办法将从Spatstat的K函数导出的绘图转换为ggplot或grob?,r,plot,spatstat,R,Plot,Spatstat,我试图使用ggpubr中的ggarrange从spatstat创建Ripley的K函数的多重绘图,即,我使用Kest计算5个景观的Ripley的K,然后将它们全部绘图。例如: kk1plot<-plot(Kest(landscape)) 但是,当我尝试使用以下命令时,返回的错误是无法将class data.frame的对象转换为grob: k1<-ggarrange(kk1plot,kk2plot,kk3plot,kk4plot,kk5plot,nrow=3,ncol=2) 同

我试图使用ggpubr中的ggarrange从spatstat创建Ripley的K函数的多重绘图,即,我使用Kest计算5个景观的Ripley的K,然后将它们全部绘图。例如:

kk1plot<-plot(Kest(landscape))
但是,当我尝试使用以下命令时,返回的错误是无法将class data.frame的对象转换为grob:

k1<-ggarrange(kk1plot,kk2plot,kk3plot,kk4plot,kk5plot,nrow=3,ncol=2) 
同样,当我使用补丁和代码时,我返回错误“仅知道如何添加GGPLOT和/或GROB”:

k1<-wrap_plots(list(kk1plot,kk2plot,kk3plot,kk4plot,kk5plot),nrow=3,ncol=2)
有人知道我如何将多个Ripley的K函数的输出绘制为一个绘图吗?i、 e.将spatstat的Kest输出转换为可以使用上述代码行之一操作的绘图?

一种方法是使用ggplotify::as.grob将绘图捕获为grob对象

然后,您可以使用ggpubr::ggarange绘制它

正确的语法为.grob~。。。替换。。。具有绘图功能

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) 
一种方法是使用ggplotify::as.grob将绘图捕获为grob对象

然后,您可以使用ggpubr::ggarange绘制它

正确的语法为.grob~。。。替换。。。具有绘图功能

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进行绘制

图书馆静电计
X1spatstat软件包使用基本图形。绘制多个图形的内置方式 估计的K-函数大致如下。 Kest返回的输出是一个data.frame,其不同的估计值如下 列,以便您可以自己使用相关美学来使用ggplot进行绘制

图书馆静电计
X1您需要一个ggplot对象作为元素,以便使用补丁添加类似plot_spacer+~plotKestlandscape的绘图。您需要一个ggplot对象作为元素,以便使用补丁添加类似plot_spacer+~plotKestlandscape的绘图。非常感谢。我以前从未使用过as.anylist,但它确实有效!太好了努力工作,非常感谢。我以前从未使用过as.anylist,但它确实有效!太好了这也很好,非常感谢,唯一的问题是,与上述方法相比,这种方法产生了一个压扁的传说。通过使用ggsave和定义绘图的大小,可以很容易地更正此问题。还感谢你教我如何创建Grob。这也很好,非常感谢,唯一的一点是,与上述方法相比,这种方法产生了一个压扁的传说。通过使用ggsave和定义绘图的大小,可以很容易地更正此问题。还感谢你教我如何创建grobs。