如何在R中使用ggplot有条件地填充区域
我试图用R绘制2016年选举结果的美国地图。 数据集如下所示-如何在R中使用ggplot有条件地填充区域,r,ggplot2,maps,R,Ggplot2,Maps,我试图用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&
` >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`
看起来像
谁能告诉我如何从这个渐变方案到2色方案,并“美化”地图,如“预期”的图像
请注意,我对R和使用R的地图非常陌生,因此请原谅我犯的任何明显错误。通过添加以下代码行并按照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")
>who.won总计$Clinton)
>总计$isTrumptotal$votePercenttotal$Clinton,是=总计$Trump,否=总计$Clinton);
>总计$colorhead(总计)
long lat group order州分区域克林顿胜过其他人
1-87.46201 30.38968 1 1阿拉巴马州34.4 62.1 3.6
2-87.48493 30.37249 1 2阿拉巴马州34.4 62.1 3.6
3-87.52503 30.37249 13阿拉巴马州34.4 62.1 3.6
4-87.53076 30.33239 14阿拉巴马34.4 62.1 3.6
5-87.57087 30.32665 1 5阿拉巴马34.4 62.1 3.6
6-87.58806 30.32665 16阿拉巴马34.4 62.1 3.6
峡部呕吐百分比颜色
162.1#3182BD
2 1 62.1#3182BD
3 1 62.1#3182BD
4 1 62.1#3182BD
5162.1#3182BD
6162.1#3182BD
>ggplot()+geom_多边形(数据=总计,aes(x=长,y=纬度,组=组,填充=字符(总计$color)),color=“黑色”,size=0.15)+实验室(fill=“投票”)
这给了我下面的地图-
谁能解释一下
通过添加以下代码行并按照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")
>who.won总计$Clinton)
>总计$isTrumptotal$votePercenttotal$Clinton,是=总计$Trump,否=总计$Clinton);
>总计$colorhead(总计)
long lat group order州分区域克林顿胜过其他人
1-87.46201 30.38968 1 1阿拉巴马州34.4 62.1 3.6
2-87.48493 30.37249 1 2阿拉巴马州34.4 62.1 3.6
3-87.52503 30.37249 13阿拉巴马州34.4 62.1 3.6
4-87.53076 30.33239 14阿拉巴马34.4 62.1 3.6
5-87.57087 30.32665 1 5阿拉巴马34.4 62.1 3.6
6-87.58806 30.32665 16阿拉巴马34.4 62.1 3.6
峡部呕吐百分比颜色
162.1#3182BD
2 1 62.1#3182BD
3 1 62.1#3182BD
4 1 62.1#3182BD
5162.1#3182BD
6162.1#3182BD
>ggplot()+geom_多边形(数据=总计,aes(x=长,y=纬度,组=组,填充=字符(总计$color)),color=“黑色”,size=0.15)+实验室(fill=“投票”)
这给了我下面的地图-
谁能解释一下
在开始绘图之前,通过减去克林顿和特朗普列,制作一个要映射的列以填充。现在,您的限制与正在绘制的实际数据不符。不过,在不使用预先构建的choropleth软件包的情况下获得AK/HI插图和东海岸撤军将是一项艰巨的工作。感谢您的回复。我从为|特朗普-克林顿|创建一个不同的专栏中了解到的情况不会产生预期的结果。我想使用两种颜色方案——“蓝色”代表克林顿,“红色”代表特朗普有条件地填充(取决于谁拥有更高的百分比)并按比例着色(对应于各自的选民百分比),而不是渐变法;这个标志表明谁赢了。如果您想要严格的双色且没有渐变,请使用该数据创建一列。布尔或因子可以。只是不要试图把数据放在绘图的中间。谢谢。你能用一些代码详细说明一下吗。我对这件事还不太熟悉,请原谅,但这一切有时听起来都与我格格不入。我的意思是,我们不是已经在各自的专栏中有克林顿和特朗普的数据了吗?它可以像
df$t\u win df$Clinton
一样简单。目前,信息已经存在,但不是您想要打印的格式。在开始打印之前,通过减去克林顿和特朗普列,制作一个要映射以填充的列。现在,您的限制与正在绘制的实际数据不符。不过,在不使用预先构建的choropleth软件包的情况下获得AK/HI插图和东海岸撤军将是一项艰巨的工作。感谢您的回复。我从为|特朗普-克林顿|创建一个不同的专栏中了解到的情况不会产生预期的结果。我想使用两种颜色方案——“蓝色”代表克林顿,“红色”代表特朗普有条件地填充(取决于谁拥有更高的百分比)并按比例着色(对应于各自的选民百分比),而不是渐变法;这个标志表明谁赢了。如果您想要严格的双色且没有渐变,请使用该数据创建一列。布尔或因子可以。只是不要试图把数据放在绘图的中间。谢谢。你能用一些代码详细说明一下吗。我对这件事还不太熟悉,请原谅,但这一切有时听起来都与我格格不入。我的意思是,我们不是已经在各自的专栏中有克林顿和特朗普的数据了吗?它可以像df$t\u win df$Clinton
一样简单。目前,信息在那里,但不是以您想要打印的格式。