【发布时间】:2013-10-18 23:53:27
【问题描述】:
我正在尝试将州缩写添加到使用 ggplot2 生成的美国地图中,但遇到了一些困难。我相信“fill =”选项会导致它,但我不确定。
下面我提供了我正在使用的代码。最初,我按照我想要的方式生成地图,除了州名。接下来,我尝试在同一张地图上叠加州级缩写。
不幸的是,它不适合我。如果我从第一张地图中注释掉“fill =”选项,我可以生成带有州缩写的地图。但是那张地图没有显示我打算显示的内容。我尝试了几种方法。我暂时只在代码中留下一个选项。
为了添加州缩写,我遵循我在这个论坛上阅读的一些建议。特别是,我正在尝试遵循 2012 年 2 月 25 日题为“ggplot centered names on a map”的讨论中的建议。
如果我能在第一张地图上添加/覆盖州缩写,我将不胜感激。
# 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(大小写)的区别引起的问题吗? -
@Hugh 在我读入 CSV 文件后,我立即将所有变量名(包括 StateAbbr)转换为小写,并在整个过程中使用小写变量名。我面临的问题是,当我尝试将状态缩写添加到原始图表时,我得到“错误:提供给离散比例的连续值”。原始“fill=”语句中使用的变量是“numer”,它是一个离散变量(原始图表适用于该变量)。我不太明白错误信息。这就是我尝试其他“fill=”的原因,它出现在上面的代码中。