gpt4 book ai didi

r - 如何在 R 中使用 ggplot 有条件地填充区域

转载 作者:行者123 更新时间:2023-12-05 07:45:06 25 4
gpt4 key购买 nike

我正在尝试使用 R 绘制包含 2016 年选举结果的美国 map 。数据集看起来像这样 -

` >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 年美国总统大选每个州的各州投票份额 map ,如果特朗普的选民百分比 (data$Trump) > 克林顿 (data$Clinton),则它是彩色的红色或蓝色。

此外,颜色强度与绘制的数据值成正比。

最终的 map 应该是这样的

what i am supposed to make

所以这就是我能够实现的 -

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")

看起来像

what i have made in 5 days

任何人都可以向我解释如何从这种渐变方案转到 2 配色方案,并像“预期”图像中那样“美化” map 吗?

请注意,我对 R 和使用 R 的 map 还很陌生,所以请原谅我犯的任何明显错误。

最佳答案

通过添加以下代码行并按照 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")

这给了我下面的 map - 1

谁能解释一下-

  1. 如何使颜色透明度与投票百分比 (total$votePercent) 成正比。
  2. 如何将颜色图例的标签重命名为“克林顿”和“特朗普”。 (它从十六进制代码颜色的 total$color 列中获取值)。

关于r - 如何在 R 中使用 ggplot 有条件地填充区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42196053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com