请考虑使用ggmap vignette
中的示例library(ggplot2)
library(ggmap)
library(rgeos)
library(sp)
library(maptools)
# get an example shape file
download.file('http://www2.census.gov/geo/tiger/PREVGENZ/tr/tr00shp/tr48_d00_shp.zip', destfile = 'census.zip')
# unzip
unzip("census.zip");
# read data into R
shapefile <- readShapeSpatial("tr48_d00.shp", proj4string = CRS("+proj=longlat +datum=WGS84"))
# convert to a data.frame for use with ggplot2/ggmap and plot
data <- fortify(shapefile)
qmap("texas", zoom = 6, maptype = "satellite") + geom_polygon(aes(x = long, y = lat, group = group),
data = data, colour = "white", fill = "black", alpha = .4, size = .3)
现在的问题是:
我想使用变量来填充多边形,如下所示:
# define a vector for the fill aestetic
fill_colour <- as.factor(1:length(shapefile))
# plot
qmap("texas", zoom = 6, maptype = "satellite")
+ geom_polygon(aes(x = long, y = lat, group = group, fill = fill_colour), data = data, alpha = .4,size = .3)
但这不起作用,我得到以下错误:
Error: Aesthetics must either be length one, or the same length as the dataProblems:fill_color
答案 0 :(得分:0)
我找到了一个使用geom_map的解决方案,产生了类似的结果:
fill_colour <- as.factor(1:length(shapefile))
qmap("texas", zoom = 6, maptype = "satellite") + geom_map(inherit.aes = FALSE, aes(fill=fill_colour, map_id = 1:length(shapefile)), map=data) + scale_fill_manual(values = c("0" = "red", "1" = "blue"))