我有两个类型为大型SpatialPointsDataFrame的对象,命名为st2和st10。它们来自同一来源。它们都可以通过以下方式轻松绘制:
plot(st2)
或者
plot(st10)
但我想要利用ggmap和ggplot绘制它们。对于st2,我可以使用简单的代码进行绘制:
map <- get_map(location = 'Poznań', zoom = 12)
ggmap(map) + geom_point(aes(x =st2@coords[,1], y = st2@coords[,2]))
但是当涉及到 st10 时,我会收到一个错误提示:
Error in data.frame(x = c(16.910848618, 16.910863876, 16.910913467, 16.910936356, :
arguments imply differing number of rows: 53885, 4
我用length()函数检查数值:
> length(st10@coords[,1])
[1] 53885
> length(st10@coords[,2])
[1] 53885
我使用summary()函数对它们进行检查
> summary(st10@coords[,1])
Min. 1st Qu. Median Mean 3rd Qu. Max.
16.84 16.88 16.91 16.91 16.91 16.99
> summary(st10@coords[,2])
Min. 1st Qu. Median Mean 3rd Qu. Max.
52.35 52.41 52.46 52.44 52.46 52.46
有什么问题吗?我有20多个SP数据框架,有些可以绘制,但其他的会出现上述错误...这与点数无关。
可能出了什么问题?或者有人能给我一些提示如何进行调试吗?
?ggmap
中的示例,您可能会注意到除了将美学映射到x = colname
之外,没有任何其他语法将美学映射到其他内容。其中colname
仅是变量名称。如果您想要从另一个数据源添加点,则可以执行类似于geom_point(data = ...,aes())
的操作。 - jorangeom_point(data=data.frame(lat=st10@coords[,1], lon=lat=st10@coords[,2]), aes())
,它作为一种解决方法起作用了。但我仍然想知道为什么在st2中不需要它?它们与ggmap有何不同?无论如何-谢谢! - mrzaes()
对其参数进行了一些特殊的评估,如果不按照它的规则来操作,就会出现问题。aes()
的意图始终是要在你明确传递给该层的数据框中评估列名。永远不要在aes()
内部使用@
、$
或[
。 - joran