将 sf 对象传递给 ggmap R 时指定 bins 数
Specify number bins when passing sf object to ggmap R
我有一个数据框对象,它是通过使用 sf::read_sf 读取形状文件创建的,并与一些具有公共地理列的预先存在的数据合并:
boundaries <- sf::read_sf('./shapefile')
map <- merge(boundaries, data, by.x = "InterZone",
by.y = "IntermediateZone2011Code", all.x = FALSE, duplicateGeoms = TRUE)
然后使用 ggmap 将其覆盖在使用 sf get_map 函数获得的提供者图块之上:
myMap <- get_map(location = c(lon = -2.27, lat = 57.1), zoom = 6,
maptype="toner", crop=FALSE, source = 'stamen')
ggmap(myMap) +
geom_sf(data = map, aes(fill=as.factor(column1)), inherit.aes = FALSE) +
scale_fill_brewer(palette = "OrRd") +
coord_sf(crs = st_crs(4326)) +
labs(x = 'Longitude', y = 'Latitude', fill = 'column1') +
ggtitle('column1')
问题是这个自动创建了数百个垃圾箱。
我一直在查看文档,但找不到用于指定 bin 数量的附加参数。如何明确将列按固定数量的 bin 细分然后映射?
如果没有可重现的示例,很难确切地说出发生了什么,但看起来您可能正在将一个连续变量转换为具有 fill=as.factor(column1)
.
的因子
一种选择是删除 as.factor
并使用 scale_fill_continuous
或您选择的其他一些连续色标。
另一种选择是查看 cut
,您可以在其中通过指定分箱数或分箱的具体起点和终点来分箱连续数据。
# Make n bins
map$data_bin <- cut(map$column, breaks = n )
# Or make specific start and end points for bins
map$data_bin <- cut(map$column, breaks = c(-Inf,50,100,Inf) )
我有一个数据框对象,它是通过使用 sf::read_sf 读取形状文件创建的,并与一些具有公共地理列的预先存在的数据合并:
boundaries <- sf::read_sf('./shapefile')
map <- merge(boundaries, data, by.x = "InterZone",
by.y = "IntermediateZone2011Code", all.x = FALSE, duplicateGeoms = TRUE)
然后使用 ggmap 将其覆盖在使用 sf get_map 函数获得的提供者图块之上:
myMap <- get_map(location = c(lon = -2.27, lat = 57.1), zoom = 6,
maptype="toner", crop=FALSE, source = 'stamen')
ggmap(myMap) +
geom_sf(data = map, aes(fill=as.factor(column1)), inherit.aes = FALSE) +
scale_fill_brewer(palette = "OrRd") +
coord_sf(crs = st_crs(4326)) +
labs(x = 'Longitude', y = 'Latitude', fill = 'column1') +
ggtitle('column1')
问题是这个自动创建了数百个垃圾箱。
我一直在查看文档,但找不到用于指定 bin 数量的附加参数。如何明确将列按固定数量的 bin 细分然后映射?
如果没有可重现的示例,很难确切地说出发生了什么,但看起来您可能正在将一个连续变量转换为具有 fill=as.factor(column1)
.
一种选择是删除 as.factor
并使用 scale_fill_continuous
或您选择的其他一些连续色标。
另一种选择是查看 cut
,您可以在其中通过指定分箱数或分箱的具体起点和终点来分箱连续数据。
# Make n bins
map$data_bin <- cut(map$column, breaks = n )
# Or make specific start and end points for bins
map$data_bin <- cut(map$column, breaks = c(-Inf,50,100,Inf) )