问题描述
我有两个 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")
我也可以收到 sf_ppp 的警告:
Warning message:
In default.charmap(ntypes,chars) :
Too many types to display every type as a different character
解决方法
每个点模式数据集 sf_ppp
和 sf_2_ppp
都有一个标记向量,它是一个 factor
,将点分类为不同的组或类型。在行话中,这称为多类型点模式。
警告消息说这些点模式之一的类型太多(即因子的可能不同级别),无法使用从可用绘图字符中选择的不同绘图字符(在基本绘图中)显示R 中的系统)。
看看你制作的图,右边的图看起来很正常。它显示了具有 6 种不同类型的多类型点模式,这些类型列在旁边,以及用于表示它们的情节字符。例如,三角形表示正面碰撞。
左边的图是当类型太多时会发生什么。代码放弃尝试将类型(级别)映射到绘制字符 pch
,而是使用字母表(小写和大写),如果级别超过 52 则回收字母表。它还截断了可能类型的列表,以便它可以适合绘图的一侧。在这种情况下,代码无法猜测您想要做什么,但您可以通过指定参数 chars
将级别映射到绘图字符,或者将一些因子级别与 {{ 1}}。
请考虑花一些时间阅读 spatstat book 的第 3 章和第 4 章,其中解释了如何处理这些数据。第 3 章免费提供。