【问题标题】:Map of New York State counties with binned colors and legend带有分类颜色和图例的纽约州县地图
【发布时间】:2020-08-11 15:05:08
【问题描述】:

我正在尝试制作纽约州的县级地图。我想根据工会化程度为每个县着色。我需要地图和图例具有四种离散的红色颜色,而不是红色渐变。我需要图例以不重叠的标签/范围(例如 0-25;26-50;51-75;76-100)显示这四种不同的颜色。

这是我的数据:

    fips unionized
1  36001  33.33333
2  36005  86.11111
3  36007   0.00000
4  36017   0.00000
5  36021   0.00000
6  36027  66.66667
7  36029  40.00000
8  36035  50.00000
9  36039   0.00000
10 36047  82.85714
11 36051   0.00000
12 36053 100.00000
13 36055  30.76923
14 36057   0.00000
15 36059  84.37500
16 36061  81.81818
17 36063  60.00000
18 36065  50.00000
19 36067  71.42857
20 36069   0.00000
21 36071  55.55556
22 36073   0.00000
23 36079 100.00000
24 36081  92.15686
25 36083  50.00000
26 36085 100.00000
27 36087  87.50000
28 36101   0.00000
29 36103  63.88889
30 36105   0.00000
31 36107   0.00000
32 36111  50.00000
33 36113  50.00000
34 36115 100.00000
35 36117   0.00000
36 36119  73.33333
37 36121   0.00000
38 36123   0.00000

我已成功制作了带有渐变颜色的地图,但不知道如何在地图和图例中制作离散颜色。

这是我的代码:

library(usmap)
library(ggplot2)
plot_usmap(regions = "counties", include = c("NY"), data = Z, values = "unionized") +
  labs(title = "Percent Unionized", subtitle = "") + 
  scale_fill_continuous(low = "white", high = "red", na.value="light grey", name = "Unionization") + theme(legend.position = "right")

谢谢!

【问题讨论】:

    标签: ggplot2 usmap


    【解决方案1】:

    这可以通过scale_fill_binnedguide_bins 来实现。试试这个:

    library(usmap)
    library(ggplot2)
    plot_usmap(regions = "counties", include = c("NY"), data = Z, values = "unionized") +
      labs(title = "Percent Unionized", subtitle = "") + 
      scale_fill_binned(low = "white", high = "red", na.value="light grey", name = "Unionization", guide = guide_bins(axis = FALSE, show.limits = TRUE)) + 
      theme(legend.position = "right")
    

    第二个选项是手动合并变量并使用scale_fill_manual 设置填充颜色,这样可以轻松设置标签,并具有自动添加 NA 的优点。对于色标,我使用了colorRampPalette(默认情况下colorRampPalette在rgb颜色空间中插值。要获得像使用scale_fill_binned的填充颜色,您可以添加参数space = "Lab"。)。

    library(usmap)
    library(ggplot2)
    
    Z$union_bin <- cut_interval(Z$unionized, n = 4, labels = c("0-25", "26-50", "51-75", "76-100"))
    
    plot_usmap(regions = "counties", include = c("NY"), data = Z, values = "union_bin") +
      labs(title = "Percent Unionized", subtitle = "") + 
      scale_fill_manual(values = colorRampPalette(c("white", "red"))(5)[2:5],
                        na.value="light grey", name = "Unionization") +
      theme(legend.position = "right")
    

    【讨论】:

    • 这看起来不错,除了图例。有没有办法重新标记四个彩色盒子中的每一个?我希望他们说 0-25; 26-50; 51-75; 76-100。谢谢!
    • 另外,当我使用您建议的代码时,“浅灰色”没有显示为 NA 值。任何额外的帮助将不胜感激!
    • @user1288578 是的。我刚刚编辑了我的代码以添加解决这两个问题的第二种方法。
    • 我只是想再次感谢您的快速有效帮助。我真的很感谢这个网站和像你这样的慷慨用户!
    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多