plot.ppp 绘制字符而不显示坐标

问题描述

我有两个 sf 对象,我想将它们并排绘制为 ppp。根据 this 问题,情节首先运行良好,情节也不错,但随后我单击“清除所有情节”以并排生成两个情节。之后坐标不再显示在任一轴上,一个显示如下所示的字符。我什至重新启动了 R,但结果仍然相同。下面是代码,示例数据可以从here下载。我不知道清除绘图窗口后出了什么问题。如何解决这个问题?

sf = st_read("~","sf")
# Regrouping data
sf = sf::st_as_sf(sf,coords = c("Long","Lat")) %>% 
  group_by(COOPID,STATION_NA) %>% 
  summarize(do_union=FALSE) 
# Counties 
sf_2 = st_read("~","sf_2")
sf_2 = sf::st_as_sf(sf_2,Manner_of_) %>% 
  summarize(do_union=FALSE) 
sf_flat = st_transform(sf,crs = 6345)
sf_2_flat = st_transform(sf_2,crs = 6345)
sf_ppp = maptools::as.ppp.SpatialPointsDataFrame(as_Spatial(sf_flat))
sf_2_ppp = maptools::as.ppp.SpatialPointsDataFrame(as_Spatial(sf_2_flat))
marks(sf_ppp) = factor(marks(Idaho_Stations__owin_c)$STATION_NA)
marks(sf_2_ppp) = factor(marks(Idaho_Stations__owin_c)$Manner_of_)
#Plot
par(mfrow=c(1,2))
plot(sf_ppp,main = "sf ppp")
plot(sf_2_ppp,main = "sf_2 ppp")

enter image description here

我也可以收到 sf_ppp 的警告:

Warning message:
In default.charmap(ntypes,chars) :
  Too many types to display every type as a different character

解决方法

每个点模式数据集 sf_pppsf_2_ppp 都有一个标记向量,它是一个 factor,将点分类为不同的组或类型。在行话中,这称为多类型点模式。

警告消息说这些点模式之一的类型太多(即因子的可能不同级别),无法使用从可用绘图字符中选择的不同绘图字符(在基本绘图中)显示R 中的系统)。

看看你制作的图,右边的图看起来很正常。它显示了具有 6 种不同类型的多类型点模式,这些类型列在旁边,以及用于表示它们的情节字符。例如,三角形表示正面碰撞。

左边的图是当类型太多时会发生什么。代码放弃尝试将类型(级别)映射到绘制字符 pch,而是使用字母表(小写和大写),如果级别超过 52 则回收字母表。它还截断了可能类型的列表,以便它可以适合绘图的一侧。在这种情况下,代码无法猜测您想要做什么,但您可以通过指定参数 chars 将级别映射到绘图字符,或者将一些因子级别与 {{ 1}}。

请考虑花一些时间阅读 spatstat book 的第 3 章和第 4 章,其中解释了如何处理这些数据。第 3 章免费提供。