【发布时间】:2016-12-11 04:34:01
【问题描述】:
我正在尝试生成美国地图,其中每个州都可以具有以下颜色之一:
EScolors <- c("#7aad42","#4a77bb","#f7931e","#d3dfbd","#787878")
我创建了一个数据框 states_info,将每个状态与其颜色相匹配。
head(states_info)
State.Code region St_Abbr Num_Estab colors
1 1 alabama AL 13123 #f7931e
3 4 arizona AZ 18053 #f7931e
4 5 arkansas AR 9154 #4a77bb
5 6 california CA 143937 #787878
6 8 colorado CO 21033 #d3dfbd
7 9 connecticut CT 17176 #f7931e
我尝试了各种方法来正确获取每个状态的颜色,但我的代码无法正常工作。 (顺便说一句,“颜色”是一个因子变量,包含特定颜色的十六进制值)
方法一:
map('state',fill=TRUE,col=states_info$colors)
我得到了一张地图,但各州的颜色不正确。这种方法可能需要匹配,但我想不通。
方法 2:我通过将每个州的纬度和经度与我的 state_info 数据框合并来绘制地图来创建一个数据框
states_location <- map_data("state")
map.df <- merge(states_location,states_info, by=intersect(states_location$region, states_info$region), all=TRUE)
map.df <- map.df[order(map.df$order),]
ggplot(map.df, aes(x=long,y=lat,group=group))+
geom_polygon(aes(fill=region.x))+
geom_path()+
scale_color_hue(states_info$colors)
这种方法使用自己的颜色渐变生成地图,而不是我指定的颜色。我究竟做错了什么? 谢谢。
【问题讨论】:
-
?scale_color_manual是你要找的。span>