我正嘗試將狀態縮寫添加到使用ggplot2生成的美國地圖並對其有一些困難。我相信「填充=」選項正在導致它,但我不確定。將狀態縮寫添加到使用ggplot2生成的地圖
下面我提供了我使用的代碼。最初,我以我想要的方式生成地圖,除了州名。接下來,我嘗試在相同的地圖上疊加狀態縮寫。
不幸的是,它不適合我。如果我從第一張地圖註釋掉「fill =」選項,我可以生成一個帶有州縮寫的地圖。但那張地圖並沒有顯示我打算展示的內容。我嘗試了幾種方法。我現在只是在代碼中留下一個選項。
要添加狀態縮寫,我正在遵循我在本論壇中閱讀的一些建議。特別是,我試圖按照日期爲2012年2月25日的標題爲「在地圖上以ggplot爲中心的名稱」的討論提供的建議。
我很感激任何關於如何將狀態縮寫添加/覆蓋到第一個地圖。
# Master US location data
states <- map_data("state")
# Read in the data
rate <- read.csv("~/R/HealthCare/Data/Test_data.csv")
names(rate) <- tolower(names(rate))
rate$numer <- as.factor(rate$numer)
rate$region <- tolower(rate$statename)
# Create data for US mapping
tomap <- merge(states, rate, sort = FALSE, by = "region")
tomap <- tomap[order(tomap$order), ]
## US Map
# 1. Target Map (w/o state abbr)
p <- qplot(long, lat, data = tomap,
group = group,
fill = numer,
geom = "polygon")
p + scale_fill_brewer(palette = "Greens",
guide = guide_legend(reverse = TRUE),
labels = c("1st cat", "2nd cat",
"3rd cat", "4th cat"))
# 2. Add State Abbreviations to Target Map
stannote <- aggregate(cbind(long, lat, group, numer) ~ stateabbr, data = tomap,
FUN=function(x)mean(range(x)))
q <- qplot(long, lat, data = tomap,
group = group,
#fill = numer,
fill = "red", #testing
geom = "polygon") +
geom_text(data=stannote, aes(long, lat, label = stateabbr), color = "blue", size=3) +
coord_map()
q
樣本數據文件如下所示 -
StateName,StateAbbr,Numer
Alabama,AL,0
Alaska,AK,0
Arizona,AZ,0
Arkansas,AR,0
California,CA,0
Colorado,CO,0
Connecticut,CT,0
Delaware,DE,0
District of Columbia,DC,1
Florida,FL,0
Georgia,GA,0
Hawaii,HI,0
Idaho,ID,1
Illinois,IL,0
Indiana,IN,0
Iowa,IA,1
Kansas,KS,0
Kentucky,KY,1
Louisiana,LA,1
Maine,ME,2
Maryland,MD,0
Massachusetts,MA,2
Michigan,MI,0
Minnesota,MN,1
Mississippi,MS,0
Missouri,MO,0
Montana,MT,0
Nebraska,NE,0
Nevada,NV,1
New Hampshire,NH,1
New Jersey,NJ,2
New Mexico,NM,1
New York,NY,3
North Carolina,NC,0
North Dakota,ND,1
Ohio,OH,0
Oklahoma,OK,0
Oregon,OR,2
Pennsylvania,PA,0
Rhode Island,RI,0
South Carolina,SC,0
South Dakota,SD,1
Tennessee,TN,0
Texas,TX,0
Utah,UT,1
Vermont,VT,2
Virginia,VA,0
Washington,WA,2
West Virginia,WV,0
Wisconsin,WI,0
Wyoming,WY,0
你得到一個錯誤?這是'StateAbbr'和'stateabbr'(case)之間的區別引起的問題嗎? – Hugh
@Hugh我在CSV文件中讀取後,將所有變量名稱(包括StateAbbr)轉換爲小寫,並在整個過程中使用小寫變量名稱。我面臨的問題是,當我嘗試將狀態縮寫添加到原始圖表時,出現「錯誤:提供給離散量程的連續值」。原始「fill =」語句中使用的變量是「numer」,它是一個離散變量(原始圖表與該變量正常工作)。我不太明白錯誤信息。這就是爲什麼我正在試驗其他的「fill =」,因爲它出現在上面的代碼中。 – user2634146