在 R 中向地图数据添加标签
Adding labels to map data in R
因此,基于 ,我使用 ggplot
创建了纽约行政区的地图
我有一个看起来像这样的数据集,叫做 boroughs_personal
borough count
Brooklyn 211
Manhattan 12
Queens 1
所以我将其加入到地图数据中,类似于上面的 post,它就像一个梦。
# download and extract data
bb <- getbb("New York City, New York")
boundaries <- opq(bbox = bb) %>%
add_osm_feature(key = "boundary", value = "administrative") %>%
osmdata_sf() %>%
unname_osmdata_sf()
boroughs <- boundaries[["osm_multipolygons"]] %>%
filter(name %in% c("Manhattan", "The Bronx", "Brooklyn", "Queens", "Staten Island")) %>%
left_join(boroughs_personal , by = c('name' = 'borough'))
ggplot() +
geom_sf(data = boroughs, aes(fill = count))+
##guides(fill=FALSE) +
scale_fill_continuous(low = "lightblue", high = "darkblue")+
theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank(),
axis.title.y=element_blank(), axis.text.y=element_blank(), axis.ticks.y=element_blank()) +
ggtitle('New York Boroughs ')
但我需要将 count
变量的标签添加到每个行政区。我该怎么做???
考虑将 data
和 aes()
声明从 geom_sf 移动到主 ggplot 函数。 geom_sf_label()
然后会知道在哪里寻找您的数据对象。
另一种方法是在每个 geom_sf_* 调用中同时使用数据和 aes - 但这是不必要的,因为标签和填充都基于相同的数据对象。
ggplot(data = boroughs, aes(fill = count,
label = count)) +
geom_sf() +
geom_sf_label(fill = "white", # override the fill from aes()
fun.geometry = sf::st_centroid) + # make Manhattan behave itself
scale_fill_continuous(low = "lightblue",
high = "darkblue") +
theme(axis.title=element_blank(),
axis.text=element_blank(),
axis.ticks=element_blank()) +
ggtitle('New York Boroughs ')
因此,基于
我有一个看起来像这样的数据集,叫做 boroughs_personal
borough count
Brooklyn 211
Manhattan 12
Queens 1
所以我将其加入到地图数据中,类似于上面的 post,它就像一个梦。
# download and extract data
bb <- getbb("New York City, New York")
boundaries <- opq(bbox = bb) %>%
add_osm_feature(key = "boundary", value = "administrative") %>%
osmdata_sf() %>%
unname_osmdata_sf()
boroughs <- boundaries[["osm_multipolygons"]] %>%
filter(name %in% c("Manhattan", "The Bronx", "Brooklyn", "Queens", "Staten Island")) %>%
left_join(boroughs_personal , by = c('name' = 'borough'))
ggplot() +
geom_sf(data = boroughs, aes(fill = count))+
##guides(fill=FALSE) +
scale_fill_continuous(low = "lightblue", high = "darkblue")+
theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank(),
axis.title.y=element_blank(), axis.text.y=element_blank(), axis.ticks.y=element_blank()) +
ggtitle('New York Boroughs ')
但我需要将 count
变量的标签添加到每个行政区。我该怎么做???
考虑将 data
和 aes()
声明从 geom_sf 移动到主 ggplot 函数。 geom_sf_label()
然后会知道在哪里寻找您的数据对象。
另一种方法是在每个 geom_sf_* 调用中同时使用数据和 aes - 但这是不必要的,因为标签和填充都基于相同的数据对象。
ggplot(data = boroughs, aes(fill = count,
label = count)) +
geom_sf() +
geom_sf_label(fill = "white", # override the fill from aes()
fun.geometry = sf::st_centroid) + # make Manhattan behave itself
scale_fill_continuous(low = "lightblue",
high = "darkblue") +
theme(axis.title=element_blank(),
axis.text=element_blank(),
axis.ticks=element_blank()) +
ggtitle('New York Boroughs ')