【发布时间】:2018-03-26 17:24:08
【问题描述】:
因此,我正在尝试根据自定义变量创建带有边界的佛罗里达县级地图。我在这里添加了我正在尝试创建的旧版地图
从本质上讲,该地图显示了佛罗里达州县的区域细分,媒体市场用黑粗线边框勾勒出来。我能够很容易地绘制这些区域。我希望添加的是在媒体市场变量“MMarket”定义的区域之外的更粗的黑线边框,类似于上面显示的地图。填充变量将是 Region,媒体市场边界轮廓将使用 MMarket 定义。以下是数据的读取和强化方式:
#read in data
fl_data <- read_csv("Data for Mapping.csv")
#read in shapefiles
flcounties1 <- readOGR(dsn =".",layer = "Florida Counties")
#Fortify based on county name
counties.points <- fortify(flcounties1, region = "NAME")
counties.points$id <- toupper(counties.points$id)
#Merge plotting data and geospatial dataframe
merged <- merge(counties.points, merged_data, by.x="id", by.y="County", all.x=TRUE)
fl_data 对象包含要映射的数据(包括媒体市场变量),并将 shapefile 数据读入flcounties1。这是我正在使用的合并数据框的示例:
head(merged %>% select(id:group, Region, MMarket))
id long lat order hole piece group Region MMarket
1 ALACHUA -82.65855 29.83014 1 FALSE 1 Alachua.1 Panhandle Gainesville
2 ALACHUA -82.65551 29.82969 2 FALSE 1 Alachua.1 Panhandle Gainesville
3 ALACHUA -82.65456 29.82905 3 FALSE 1 Alachua.1 Panhandle Gainesville
4 ALACHUA -82.65367 29.82694 4 FALSE 1 Alachua.1 Panhandle Gainesville
5 ALACHUA -82.65211 29.82563 5 FALSE 1 Alachua.1 Panhandle Gainesville
6 ALACHUA -82.64915 29.82648 6 FALSE 1 Alachua.1 Panhandle Gainesville
我可以使用以下代码轻松获得区域变量的地图:
ggplot() +
# county polygons
geom_polygon(data = merged, aes(fill = Region,
x = long,
y = lat,
group = group)) +
# county outline
geom_path(data = merged, aes(x = long, y = lat, group = group),
color = "black", size = 1) +
coord_equal() +
# add the previously defined basic theme
theme_map() +
labs(x = NULL, y = NULL,
title = "Florida: Regions by County") +
scale_fill_brewer(palette = "Set3",
direction = 1,
drop = FALSE,
guide = guide_legend(direction = "vertical",
title.hjust = 0,
title.vjust = 1,
barheight = 30,
label.position = "right",
reverse = T,
label.hjust = 0))
【问题讨论】:
-
数据是否采用您开始时显示的格式,或者您是否对其进行了强化?如果它首先以 sf 或 sp 格式出现(即从形状文件或其他格式读取),我想我可以帮助使用不涉及强化的方法
-
如果你不介意使用
sf和ggplot2的github 版本,有一个geom_sf函数可以将地理形状添加为geom 层,你可以做得非常漂亮 -
@sebdalgarno 我编辑了主要帖子以显示如何读取数据。
flcounties1是 sp 格式,我最初使用县名作为 id 变量来加强这一点。当我将媒体市场变量添加到flcounties1并使用该变量作为下面概述的@FelipeAlvarenga 进行强化时,地图仍然包含更大媒体市场中县的轮廓。我试图只保留创建媒体市场外部边界的县级轮廓,同时从包含它们的媒体市场中删除所有内部县级轮廓,就像在第一张地图中一样。 -
@Camille 你介意更详细地解释一下如何做到这一点吗?我愿意接受所有建议!
-
不幸的是,很难提供没有可重复数据的解决方案。
标签: r ggplot2 maps choropleth