我正在尝试创建一个简单的ggmap,并标注一些学校。我可以轻松地让学校显示在地图上(下面是代码)。但是,我想引入一张学校图标的图片来代替这些点。
据我所知,annotation_custom不起作用,因为它需要笛卡尔坐标。Inset应该可以工作,但这只会为一个学校带来图像,而不是所有学校。再次强调,我想将点字符更改为图像,而不仅仅是添加一个图像。
我怀疑答案可能与grImport、subplot和可能与geom_point交互的函数有关。但是,我束手无策。
这是一种很好的图标形式:wikimedia graduation hat 这个问题的答案在ggplot2中使用刻度标记图片很好地添加了图片,但我想将图片作为点字符并根据属性更改颜色、大小等。
据我所知,annotation_custom不起作用,因为它需要笛卡尔坐标。Inset应该可以工作,但这只会为一个学校带来图像,而不是所有学校。再次强调,我想将点字符更改为图像,而不仅仅是添加一个图像。
我怀疑答案可能与grImport、subplot和可能与geom_point交互的函数有关。但是,我束手无策。
这是一种很好的图标形式:wikimedia graduation hat 这个问题的答案在ggplot2中使用刻度标记图片很好地添加了图片,但我想将图片作为点字符并根据属性更改颜色、大小等。
# Load needed packages
# install.packages(c("rgdal", "rgeos", "maptools", "ggmap", "sp", "plyr", "XML", "grImport"))
library(rgdal)
library(rgeos)
library(maptools)
library(ggmap)
library(sp)
library(plyr)
library(XML)
library(grImport)
# Define a value for the Seattle Public Schools (SPS) url:
SPSurl <- "http://www.seattleschools.org/modules/cms/pages.phtml? pageid=197023&sessionid=95b8499fc128fde5d7e1335751c73fee&t"
# All of the addresses for SPS, multiple tables:
SPSaddresses <- readHTMLTable(SPSurl)
# Just elementary schools
SPSelementary <- readHTMLTable(SPSurl, which=3, header=T)
# Just keep the names of the schools and addresses
SPSelementary <- SPSelementary[,c(1,3)]
# Change the address column name
colnames(SPSelementary)[2] <- "address"
# Convert all to character
SPSelementary <-
data.frame(lapply(SPSelementary,
as.character),
stringsAsFactors=FALSE)
# get rid of the phone numbers in the address
SPSelementary$address <- substr(SPSelementary$address,
1,
nchar(SPSelementary$address)-14)
# get rid of extra space at end of line
SPSelementary$address <- sub("[[:blank:]]+$",
"",
SPSelementary$address)
# get the longitude and latitude of the school addresses
SPSelementary_lonlat <- geocode(SPSelementary$address)
# combine addresses with longitude and latitude data
SPSelementary$id <- rownames(SPSelementary)
SPSelementary_lonlat$id <- rownames(SPSelementary_lonlat)
SPSelementary_ll <- merge(SPSelementary,
SPSelementary_lonlat,
by="id")
# Get a map of the area around the McDonald school
McDonald_map <- get_map("144 NE 54th Street Seattle WA 98105",
zoom=15,
maptype='roadmap')
McDonald_map_plot <-
ggmap(McDonald_map)
McDonald_map_plot
# Add the schools
McDonald_map_plot <- McDonald_map_plot +
geom_point(data=SPSelementary_ll,
mapping=aes(x=lon,
y=lat),
shape = 17, ### This be a triangle, want to change to school.
size = 4,
alpha=.75)
McDonald_map_plot