我正在尝试使用R绘制2016年选举结果的美国地图 数据集如下所示 -
` >head(data)
long lat group order State subregion Clinton Trump other
1 -87.46201 30.38968 1 1 alabama <NA> 34.4 62.1 3.6
2 -87.48493 30.37249 1 2 alabama <NA> 34.4 62.1 3.6
3 -87.52503 30.37249 1 3 alabama <NA> 34.4 62.1 3.6
4 -87.53076 30.33239 1 4 alabama <NA> 34.4 62.1 3.6
5 -87.57087 30.32665 1 5 alabama <NA> 34.4 62.1 3.6
6 -87.58806 30.32665 1 6 alabama <NA> 34.4 62.1 3.6`
任务是在2016年美国总统选举的每个州制作州与州之间的百分比投票份额地图,以便如果特朗普的选民百分比(数据$特朗普)>克林顿(数据$克林顿)它用红色其他蓝色着色。
此外,颜色强度与绘制的数据值成比例。
最终地图应如下所示
所以这就是我能够实现的目标 -
ggplot() +
geom_polygon(data = total,
aes(x = long, y = lat, group = group,
fill = ifelse(total$Trump > total$Clinton,
yes = total$Trump,
no = total$Clinton)),
color = "black", size = 0.15) +
scale_fill_gradient2(low = muted("red"), mid = "white",
midpoint = 50, high = muted("blue"),
limits = c(min(total$Trump), max(total$Clinton)))+
labs(fill = "TestLabel")
看起来像
任何人都可以解释我如何从这种渐变方案转变为2种配色方案,以及&#34;美化&#34;地图中的预期&#34;预期&#34;图像?
请注意,我是R和使用R的地图的新手,所以请原谅我正在犯的任何明显错误。
答案 0 :(得分:0)
通过添加以下代码行并按照alistaire的建议修改数据框,我能够更接近目标。
>who.won<-as.numeric(total$Trump>total$Clinton)
>total$isTrump<-who.won
>total$votePercent<-ifelse(total$Trump>total$Clinton,yes = total$Trump, no = total$Clinton);
>total$color<-factor(total$isTrump, levels =c(0,1), labels = c("#F79CD4","#0FCFC0"));
>head(total)
long lat group order State subregion Clinton Trump other
1 -87.46201 30.38968 1 1 alabama <NA> 34.4 62.1 3.6
2 -87.48493 30.37249 1 2 alabama <NA> 34.4 62.1 3.6
3 -87.52503 30.37249 1 3 alabama <NA> 34.4 62.1 3.6
4 -87.53076 30.33239 1 4 alabama <NA> 34.4 62.1 3.6
5 -87.57087 30.32665 1 5 alabama <NA> 34.4 62.1 3.6
6 -87.58806 30.32665 1 6 alabama <NA> 34.4 62.1 3.6
isTrump votePercent color
1 1 62.1 #3182BD
2 1 62.1 #3182BD
3 1 62.1 #3182BD
4 1 62.1 #3182BD
5 1 62.1 #3182BD
6 1 62.1 #3182BD
>ggplot()+geom_polygon(data = total, aes(x = long, y = lat, group = group,fill = as.character(total$color)), color = "black", size = 0.15 )+labs(fill = "Votes")
它给了我以下地图 - 1
任何人都可以解释 -