sf与使用空间数据相比,该软件包似乎是一种更加用户友好的方法sp.例如,如果我有一组纬度/经度坐标,我可以使用开发版本轻松绘制ggplot2:
library(sf)
devtools::install_github("tidyverse/ggplot2")
library(ggplot2)
# generate some data
set.seed(123)
y = rnorm(10, mean=40, sd=20)
x = rnorm(10, mean=-100, sd=30)
# collect to data.frame
xy = data.frame(x=x,y=y)
# create sf object
xy.sf = sf::st_as_sf(xy, coords=c("x", "y"), crs=4269)
# plot points
ggplot(data=xy.sf) + geom_sf()
Run Code Online (Sandbox Code Playgroud)
该ggplot2::geom_sf函数知道xy.sf对象的几何是一组点,因此我不需要调用,例如ggplot2::geom_point().
但是,假设我想根据点集添加另一个geom.
例如,如果我想生成一个轮廓图层以显示点集中的位置,我会使用ggplot2::geom_density2d或者ggplot2::stat_density2d,如本答案和本答案所示.
但是,以下代码
ggplot(data=xy.sf) +
geom_sf() +
geom_density2d(data=xy.sf, aes(x=x,y=y,colour=..level..))
Run Code Online (Sandbox Code Playgroud)
产生以下图像

请注意,countour线似乎有相反的坐标!
我试着摆弄上面的代码,但无法让它工作.我意识到sf包装是相当新的,但地图非常接近正确!有任何想法吗?
编辑:忘记添加会话信息
> sessionInfo() …Run Code Online (Sandbox Code Playgroud)