我不能爲什麼你的代碼是不產生輸出說話 - 有太多可能的原因 - 但是這是你所想實現?
代碼
library(rgdal)
library(ggplot2)
library(plyr)
library(RColorBrewer)
setwd("< directory with all your files >")
map <- readOGR(dsn=".",layer="ALRIS_tigcounty")
marriages <- read.csv("marriages.2012.csv",header=T,skip=3)
marriages <- marriages[2:16,]
marriages$County <- tolower(gsub(" ","",marriages$County))
marriages$Total <- as.numeric(as.character(marriages$Total))
data <- data.frame(id=rownames([email protected]), [email protected]$NAME, stringsAsFactors=F)
data <- merge(data,marriages,by.x="NAME",by.y="County",all.x=T)
map.df <- fortify(map)
map.df <- join(map.df,data, by="id")
ggplot(map.df, aes(x=long, y=lat, group=group))+
geom_polygon(aes(fill=Total))+
geom_path(colour="grey50")+
scale_fill_gradientn("2012 Marriages",
colours=rev(brewer.pal(8,"Spectral")),
trans="log",
breaks=c(100,300,1000,3000,10000))+
theme(axis.text=element_blank(),
axis.ticks=element_blank(),
axis.title=element_blank())+
coord_fixed()
說明
要生成等值線圖,最終我們需要與您感興趣的基準多邊形(結婚總數由縣級)相關聯。這是三個步驟:首先,我們的多邊形ID與縣名關聯:
data <- data.frame(id=rownames([email protected]), [email protected]$NAME, stringsAsFactors=F)
然後,我們用總的婚姻縣名關聯:
data <- merge(data,marriages,by.x="NAME",by.y="County",all.x=T)
然後我們與多邊形的結果相關聯的座標數據:
map.df <- join(map.df,data, by="id")
您的具體情況有很多潛在的陷阱:
- 您提供的鏈接是pdf - 完全沒用。但是稍微戳了一下,發現有相同數據的Excel file。即使這個文件需要清理:數據有「,」分隔符,需要關閉,並且一些單元格有腳註,必須將其刪除。最後,我們必須保存爲csv文件。
由於我們在縣名匹配,名稱必須匹配!在shape文件屬性表,縣名均爲小寫,並且空格都被移除(例如,「聖克魯斯」是「聖克魯茲」因此,我們需要小寫縣名和刪除空格:
marriages$County <- tolower(gsub(" ","",marriages$County))
的總計列進來作爲一個因素,其具有被轉換成數字:
marriages$Total <- as.numeric(as.character(marriages$Total))
你的實際數據是高度傾斜:馬里科帕縣有23600次婚姻,格林利有50個。所以使用線性色階不是很有用。因此,我們採用對數:
scale_fill_gradientn("2012 Marriages", colours=rev(brewer.pal(8,"Spectral")), trans="log", breaks=c(100,300,1000,3000,10000))+
嘗試用更換您ggplot代碼:'ggplot(county.df,AES(長,LAT組=組,請填寫= ID))+ geom_polygon ()+ geom_path(color =「white」)+ coord_fixed()'我希望你意識到這只是用多邊形ID填充顏色的多邊形。 – jlhoward
只是一個澄清的問題:你的「數據源」在2012年在亞利桑那州的縣通過婚姻。您是否試圖根據2012年在該縣有多少婚姻的情況,創建一個以縣爲單位的全州地圖? – jlhoward
@jihoward - 是的,你說得對。我正在做同樣的事 – yashgarg1232