向与 ggmap 一起使用的数据添加一列
Add a column to data used with ggmap
我有一个澳大利亚统计局部区域(类似于邮政编码)的形状文件。您可以下载它 here,文件名为 "Statistical Local Areas ASGC Ed 2011 Digital Boundaries in ESRI Shapefile Format"(在撰写本文时,它是第二个 link)。
我正在尝试将 SLA 映射到 ggmap
图上,使用辅助 table 中的人口字段来提供颜色映射。到目前为止,这是我得到的:
library(tidyverse)
library(ggmap)
library(rgdal)
pops <- read_csv('http://mm-c.me/work/SlaPopulations.csv', col_types = "ci")
slas <- readOGR(dsn="SLA",layer="SLA11aAust")
aus4 <- get_map("Australia",zoom=4)
ggmap(aus4)
ggmap(aus4)+
geom_path(data=slas, color = "black", aes(x=long,y=lat, group = group))
#Create a copy so we don't accidentally break the original
slasextended <- slas
slasextended@data <- slasextended@data %>%
left_join(pops)
#Throws an error
#Error in FUN(X[[i]], ...) : object 'Population' not found
ggmap(aus4)+
geom_polygon(data=slasextended,
color = "black",
aes(x = long,
y = lat,
group = group,
fill = Population))
此方法基于 this one 等问题,建议将 @data
对象视为数据框,然后向其添加列。问题是似乎 ggmap
找不到用于显示的数据。
我该怎么做?我做事是不是完全倒退了?
根据 ggplot2 tutorial,空间对象应转换为数据框才能与 ggplot 正常工作:
slasextended@data <- slasextended@data %>%
left_join(pops)
slasextended@data$id <- rownames(slasextended@data)
slasextended.points <- fortify(slasextended, region = "id")
slasextended.df <- left_join(slasextended.points,
slasextended@data, by = "id")
生成的标准数据框 slasextended.df
应该用于进一步绘图,而不是 SpatialPolygonsDataFrame slasextended
:
test_plot <- ggmap(aus4) +
geom_polygon(data = slasextended.df,
color = "black",
aes(
x = long,
y = lat,
group = group,
fill = Population)
) +
scale_fill_distiller(palette = "Greens",
na.value = "white")
希望对您有所帮助。
我有一个澳大利亚统计局部区域(类似于邮政编码)的形状文件。您可以下载它 here,文件名为 "Statistical Local Areas ASGC Ed 2011 Digital Boundaries in ESRI Shapefile Format"(在撰写本文时,它是第二个 link)。
我正在尝试将 SLA 映射到 ggmap
图上,使用辅助 table 中的人口字段来提供颜色映射。到目前为止,这是我得到的:
library(tidyverse)
library(ggmap)
library(rgdal)
pops <- read_csv('http://mm-c.me/work/SlaPopulations.csv', col_types = "ci")
slas <- readOGR(dsn="SLA",layer="SLA11aAust")
aus4 <- get_map("Australia",zoom=4)
ggmap(aus4)
ggmap(aus4)+
geom_path(data=slas, color = "black", aes(x=long,y=lat, group = group))
#Create a copy so we don't accidentally break the original
slasextended <- slas
slasextended@data <- slasextended@data %>%
left_join(pops)
#Throws an error
#Error in FUN(X[[i]], ...) : object 'Population' not found
ggmap(aus4)+
geom_polygon(data=slasextended,
color = "black",
aes(x = long,
y = lat,
group = group,
fill = Population))
此方法基于 this one 等问题,建议将 @data
对象视为数据框,然后向其添加列。问题是似乎 ggmap
找不到用于显示的数据。
我该怎么做?我做事是不是完全倒退了?
根据 ggplot2 tutorial,空间对象应转换为数据框才能与 ggplot 正常工作:
slasextended@data <- slasextended@data %>%
left_join(pops)
slasextended@data$id <- rownames(slasextended@data)
slasextended.points <- fortify(slasextended, region = "id")
slasextended.df <- left_join(slasextended.points,
slasextended@data, by = "id")
生成的标准数据框 slasextended.df
应该用于进一步绘图,而不是 SpatialPolygonsDataFrame slasextended
:
test_plot <- ggmap(aus4) +
geom_polygon(data = slasextended.df,
color = "black",
aes(
x = long,
y = lat,
group = group,
fill = Population)
) +
scale_fill_distiller(palette = "Greens",
na.value = "white")
希望对您有所帮助。