如何在R的空间叠加中包含夏威夷和阿拉斯加

赛勒斯·穆罕默德(Cyrus Mohammadian)

我在将人口统计数据点叠加到美国县地图上时遇到了一些麻烦。我能够很好地进行地图绘制,但没有显示夏威夷和阿拉斯加的数据。我已经确定了问题的根源-在我over执行命令之后。我的工作流程使用一个csv文件,该文件可在此处找到(https://www.dropbox.com/s/0arazi2n0adivzc/data.dem2.csv?dl=0)。这是我的工作流程:

#Load dependencies
devtools::install_github("hrbrmstr/albersusa")
library(albersusa)
library(dplyr)
library(rgeos)
library(maptools)
library(ggplot2)
library(ggalt)
library(ggthemes)
library(viridis)

#Read Data
df<-read.csv("data.dem.csv")

#Retreive polygon shapefile
counties_composite() %>% 
  subset(df$state %in% unique(df$state)) -> usa #Note I've checked here and Alaska is present, see below 

在此处输入图片说明

#Subset just points and create spatial points object
pts <- df[,4:1]
pts<-as.data.frame(pts)
coordinates(pts) <- ~long+lat
proj4string(pts) <- CRS(proj4string(usa))  #Note I've checked here as welland Alaska is present still, see here 

在此处输入图片说明

#Spatial overlay
b<-over(pts, usa) #This is where the problem arises: see here 

在此处输入图片说明

b<-select(b, -state)
b<-bind_cols(df, b)

bind_cols(df, select(over(pts, usa), -state)) %>% 
  count(fips, wt=count) -> df

usa_map <- fortify(usa, region="tips")

ggplot()+
geom_map(data=usa_map, map=usa_map,
                    aes(long, lat, map_id=id),
                    color="#b2b2b2", size=0.05, fill="grey") +
geom_map(data=df, map=usa_map,
                    aes(fill=n, map_id=fips),
                    color="#b2b2b2", size=0.05) +
scale_fill_viridis(name="Count", trans="log10") +
gg + coord_map() +
theme_map() +
theme(legend.position=c(0.85, 0.2))

您可能会怀疑,最终输出不会显示阿拉斯加或夏威夷的数据。我不确定发生了什么,但看来oversp包中命令是问题的根源。任何建议,不胜感激。

在此处输入图片说明

值得注意的是,这与在美国使用ggplot2如何创建50个州地图(而不是仅48个州)的主题地图上找到“重定位阿拉斯加和夏威夷”时发现的问题不同。

这些问题彼此无关。这不是重复的。第一个问题是关于夏威夷和阿拉斯加的实际多边形的位置,正如您从我的地图中可以看到的那样,我没有这个问题。第二个链接是关于获取包括夏威夷和阿拉斯加的地图。同样,我的地图包括这两个地图,但是在我的数据处理工作流中的某个地方,这两个地图的数据都被删除了(特别是叠加功能)。请不要将其标记为重复项。

hrbrmstr

您需要做的比上一个答案还要多,因为复合shapefile(按其定义非常准确)将alaska和hawaii从其原始位置移开,这over()在尝试将点与多边形匹配时错过它们。这很容易解决:

library(albersusa) # devtools::install_github("hrbrmstr/albersusa)
library(readr)
library(dplyr)
library(rgeos)
library(rgdal)
library(maptools)
library(ggplot2)
library(ggalt)
library(ggthemes)
library(viridis)

df <- read_csv("data.dem2.csv")

# need this for the composite map & no need to subset
usa <- counties_composite() 

# need this for the "over" since the composite map totally
# messes with the lon/lat positions of alaska & hawaii
URL <- "http://eric.clst.org/wupl/Stuff/gz_2010_us_050_00_500k.json"
fil <- basename(URL)
if (!file.exists(fil)) download.file(URL, fil)
orig_counties <- readOGR(fil, "OGRGeoJSON", stringsAsFactors=FALSE)

# your new csv has an extra column at the beginning
pts <- as.data.frame(df[,3:2])
coordinates(pts) <- ~long+lat
proj4string(pts) <- CRS(proj4string(orig_counties))

# don't need to select out the duplicate col name anymore
# but we do need to create the FIPS code
bind_cols(df, over(pts, orig_counties)) %>% 
  mutate(fips=sprintf("%s%s", STATE, COUNTY)) %>% 
  count(fips, wt=count) -> df

usa_map <- fortify(usa, region="fips")

gg <- ggplot()
gg <- gg + geom_map(data=usa_map, map=usa_map,
                    aes(long, lat, map_id=id),
                    color="#b2b2b2", size=0.05, fill="white")
gg <- gg + geom_map(data=df, map=usa_map,
                    aes(fill=n, map_id=fips),
                    color="#b2b2b2", size=0.05)
gg <- gg + scale_fill_viridis(name="Count", trans="log10")
gg <- gg + coord_proj(us_aeqd_proj)
gg <- gg + theme_map()
gg <- gg + theme(legend.position=c(0.85, 0.2))
gg

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对于R中的County Choropleth地图,阿拉斯加和夏威夷的格式不正确

来自分类Dev

如何在不突出阿拉斯加的情况下使用Highcharts突出显示美国?

来自分类Dev

需要用JavaScript检查邮政编码来查找阿拉斯加等

来自分类Dev

如何在RewriteRule中包含空间?

来自分类Dev

如何在Bind()中包含列名的空间

来自分类Dev

如何在JsonResult中包含名称空间

来自分类Dev

如何在包含的文件中包含名称空间?

来自分类Dev

如何在Android中结合叠加位图和捕获的图像?

来自分类Dev

如何在python中制作一个包含阿拉伯音标作为键的字典

来自分类Dev

如何在命名空间的Cython中包含C ++类?

来自分类Dev

如何在R中的空间多边形中添加Hawaii和Alaska?

来自分类Dev

如何在悬停叠加图像中包含文本 - 仅限 HTML、CSS、JavaScript

来自分类Dev

如何在画布上叠加 div 而不创建更多空间

来自分类Dev

如何在codeigniter中添加阿拉伯语和英语?

来自分类Dev

如何在键盘中输入阿拉伯语上标和下标字母?

来自分类Dev

如何在pygame中修复阿拉伯/波斯文字和字体?

来自分类Dev

如何在php中获取波斯和阿拉伯字符

来自分类Dev

如何在键盘中输入阿拉伯语上标和下标字母?

来自分类Dev

如何在WPF中叠加图像?

来自分类Dev

如何在活动中创建叠加视图

来自分类Dev

如何在OpenGL中叠加文字

来自分类Dev

如何在活动中创建叠加视图

来自分类Dev

如何在RelativeLayout中叠加视图?

来自分类Dev

如何在jQuery中创建叠加形状

来自分类Dev

如何在 CSS 中添加图像叠加

来自分类Dev

如何在R中的read.csv的文件路径中包含字符串和变量?

来自分类Dev

如何在R中的read.csv的文件路径中包含字符串和变量?

来自分类Dev

如何在服务中叠加状态栏和导航栏?(Android 4.4)

来自分类Dev

如何在Godot中更改子画面的饱和度和叠加

Related 相关文章

  1. 1

    对于R中的County Choropleth地图,阿拉斯加和夏威夷的格式不正确

  2. 2

    如何在不突出阿拉斯加的情况下使用Highcharts突出显示美国?

  3. 3

    需要用JavaScript检查邮政编码来查找阿拉斯加等

  4. 4

    如何在RewriteRule中包含空间?

  5. 5

    如何在Bind()中包含列名的空间

  6. 6

    如何在JsonResult中包含名称空间

  7. 7

    如何在包含的文件中包含名称空间?

  8. 8

    如何在Android中结合叠加位图和捕获的图像?

  9. 9

    如何在python中制作一个包含阿拉伯音标作为键的字典

  10. 10

    如何在命名空间的Cython中包含C ++类?

  11. 11

    如何在R中的空间多边形中添加Hawaii和Alaska?

  12. 12

    如何在悬停叠加图像中包含文本 - 仅限 HTML、CSS、JavaScript

  13. 13

    如何在画布上叠加 div 而不创建更多空间

  14. 14

    如何在codeigniter中添加阿拉伯语和英语?

  15. 15

    如何在键盘中输入阿拉伯语上标和下标字母?

  16. 16

    如何在pygame中修复阿拉伯/波斯文字和字体?

  17. 17

    如何在php中获取波斯和阿拉伯字符

  18. 18

    如何在键盘中输入阿拉伯语上标和下标字母?

  19. 19

    如何在WPF中叠加图像?

  20. 20

    如何在活动中创建叠加视图

  21. 21

    如何在OpenGL中叠加文字

  22. 22

    如何在活动中创建叠加视图

  23. 23

    如何在RelativeLayout中叠加视图?

  24. 24

    如何在jQuery中创建叠加形状

  25. 25

    如何在 CSS 中添加图像叠加

  26. 26

    如何在R中的read.csv的文件路径中包含字符串和变量?

  27. 27

    如何在R中的read.csv的文件路径中包含字符串和变量?

  28. 28

    如何在服务中叠加状态栏和导航栏?(Android 4.4)

  29. 29

    如何在Godot中更改子画面的饱和度和叠加

热门标签

归档