这个老的bug仍然没有解决,或者有一个合理的解决方案吗?
部分城市:
require(ggplot2)
require(ggmap)
require(sf)
cities = sf::read_sf('{
"type": "FeatureCollection",
"name": "cities",
"crs": {
"type": "name",
"properties": {
"name": "urn:ogc:def:crs:OGC:1.3:CRS84"
}
},
"features": [{
"type": "Feature",
"properties": {
"city": "London"
},
"geometry": {
"type": "Point",
"coordinates": [-0.13, 51.51]
}
},
{
"type": "Feature",
"properties": {
"city": "Rome"
},
"geometry": {
"type": "Point",
"coordinates": [12.48, 41.89]
}
},
{
"type": "Feature",
"properties": {
"city": "Stockholm"
},
"geometry": {
"type": "Point",
"coordinates": [18.07, 59.33]
}
},
{
"type": "Feature",
"properties": {
"city": "Istanbul"
},
"geometry": {
"type": "Point",
"coordinates": [28.96, 41.01]
}
}
]
}
')
和一个ggmap底图:
bb = c(left = -11, bottom = 35, right = 42, top = 65)
europe = ggmap::get_stamenmap(bbox = bb, maptype = 'toner-lite', zoom = 3)
ggmap(europe) +
geom_sf(data = cities, inherit.aes = FALSE, col = 'red', size = 3)
1条答案
按热度按时间sbdsn5lh1#
我认为问题在于
ggmap
使用坐标对象CoordMap
来决定光栅的像素位置。通过切换到coord_sf
(当您添加geom_sf
图层时会发生这种情况),您会使光栅失去对齐。如果你提取点的坐标,你可以简单地将它们叠加成一个geom_point
层:如果你想绘制更复杂的
sf
对象,那么我会远离ggmap
,使用maptiles
: