【问题标题】:Choropleth zip codeChoropleth 邮政编码
【发布时间】:2015-07-26 21:04:42
【问题描述】:

我正在尝试在弗吉尼亚州的部分地区创建一个邮政编码的等值线,以显示一些公司数据。除了最后一行aes(fill = growth),我可以让所有东西都正常运行。在那里,我得到一个错误:

错误:美学长度必须为 1,或与 dataProblems:growth 长度相同

这是我的数据:

我的代码:

library(ggplot2)
library(maptools)
library(rgdal)
library(plyr)

#set working directory
setwd("F:/Dropbox/Zip Codes")

#load Shapefile NOVA
Zips <- readOGR(dsn="F:/Dropbox/Zip Codes", layer="NOVA")

#load Company Data of Zip Codes
Company <- read.csv("Data.csv")

#set to data.frame
Company_df <- data.frame(Company)

#create growth vector
growth = Company_df[,'Growth']

#merge growth vector into Zips
Zips$growth = growth

#ggplot
Nmap = ggplot(Zips) +
aes(x = long, y = lat, group=group) +
geom_polygon() +
aes(fill = growth)
Nmap

【问题讨论】:

    标签: r zipcode choropleth


    【解决方案1】:

    我组织你的目录结构有点不同。尽管 Internet 上有较旧的代码 sn-ps,但您不需要将数据绑定到数据帧。但是,您确实需要fortify 多边形才能与 ggplot 一起使用。此外,read.csv 制作了一个 data.frame,因此您无需从该调用中重新制作一个。

    library(ggplot2)
    library(maptools)
    library(rgdal)
    library(ggthemes)
    
    setwd("~/Development/nova_choro")
    
    zips <- readOGR(dsn="zip_codes/NOVA.shp", layer="NOVA")
    company <- read.csv("data.csv")
    
    # this makes the polygons usable to ggplot2
    # and by using ZCTA5CE10 as the region id, 
    # you can then use that equivalent id field 
    # from the actual company data frame for the
    # choropleth colors
    
    zips_map <- fortify(zips, region="ZCTA5CE10")
    
    gg <- ggplot()
    # draw the base map polygons
    gg <- gg + geom_map(data=zips_map, map=zips_map,
                        aes(x=long, y=lat, map_id=id),
                        color="#7f7f7f", fill="white", size=0.25)
    # fill in the polygons
    gg <- gg + geom_map(data=company, map=zips_map,
                        aes(fill=Growth, map_id=zip_code_area),
                        color="#7f7f7f", size=0.25)
    # better color scheme
    gg <- gg + scale_fill_distiller(palette="Greens")
    # no "slashes" in the legend boxes
    gg <- gg + guides(fill=guide_legend(override.aes=list(colour=NA)))
    # use an actual projection (there may be a better one for NOVA
    gg <- gg + coord_map()
    # get rid of map chart junk
    gg <- gg + theme_map()
    gg
    

    我做了一些检查,VA 使用修改后的 Lambert Conformal 投影,因此您可以根据需要将默认墨卡托 coord_map 替换为 gg &lt;- gg + coord_map("lambert", lat0=38.34427, lat1=39.14084),这应该与官方机构使用的足够接近。

    【讨论】:

    • 清晰且非常有用。非常感谢。
    猜你喜欢
    • 2016-05-16
    • 2023-04-06
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    相关资源
    最近更新 更多