首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Choroplethr为表值分配颜色

使用Choroplethr为表值分配颜色
EN

Stack Overflow用户
提问于 2020-05-13 09:56:31
回答 1查看 228关注 0票数 1

我正试着用choroplethr做一张县级地图。目前,我的csv中有3个分类整数(1,2,3),列值根据每个县的不同而变化。“区域”列包含县fips。

我希望将以下值显示为相应的标签,颜色(value = label = color):

0=“无”=“白”,1= "MD“= "#64acbe",2= "DO”= "#c85a5a",3=“两者”= "#574249",

我尝试了几个scale_fill_brewer组合,但没有我想要的结果。任何帮助都是很好的。下面是模拟我使用的数据的代码:

代码语言:javascript
复制
library(choroplethr)
library(ggplot2)
library(choroplethrMaps)

Res <- data.frame(

region = c(45001, 22001, 51001, 16001, 19001, 21001, 29001, 40001, 8001, 19003, 16003, 17001, 18001, 28001, 38001, 31001, 39001, 42001, 53001, 55001, 50001, 72001, 72003, 72005, 72007, 72009, 45003, 27001),

value = c(0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3), 
stringsAsFactors = FALSE)

county_choropleth(Res, 
            title = "All United States Medical Residencies",
            legend = "Types of Medical Residencies"
             )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-14 00:09:09

谢谢你使用Choroplethr。

我认为这里有几个问题。我想要解决的第一个问题是,您的value列包含数字数据。这本身并不是一个问题。而是因为您实际上正在使用它来编写分类数据(例如,"MD“、"OD”等)这是个问题。因此,我的第一项任务是将数据类型从数字更改为字符数据:

代码语言:javascript
复制
> class(Res$value)
[1] "numeric"
> Res$value = as.character(Res$value)
> class(Res$value)
[1] "character"

现在,我将把“数字”替换为您想要的类别名称:

代码语言:javascript
复制
> Res[Res=="0"] = "None"
> Res[Res=="1"] = "MD"
> Res[Res=="2"] = "DO"
> Res[Res=="3"] = "Both"
> head(Res)
  region value
1  45001  None
2  22001    MD
3  51001    DO
4  16001  Both
5  19001  None
6  21001    MD

现在是第二个问题。你说你试图使用scale_fill_brewer。这个功能是用来使用布鲁尔秤的。但你不会想要这些的。你说你有自己的天平。所以你想要使用scale_fill_manual

代码语言:javascript
复制
county_choropleth(Res) + 
  scale_fill_manual(values=c("None" = "#ffffffff",  
                             "MD" = "#64acbe", 
                             "DO" = "#c85a5a", 
                             "Both" = "#574249"),
                    name="Types of Medical Residencies")

注意: choroplethr所称的“图例”(实际上是图例的名称)实际上是一个ggplot2比例的属性。特别是,它是规模的name。因此,如果使用自己的比例,就不能再使用choroplethr的legend参数了。

当然,现在我们有了一个新的问题:阿拉斯加和夏威夷都是黑人。实际上,我忘记了这个问题(我已经有一段时间没有从事Choroplethr的工作了)。发生这种情况的原因是非常技术性的,而且可能比您所关心的更详细,但为了完整起见,我将在这里提及它: choroplethr使用ggplot2注释在适当的位置呈现AK和HI。choropelthr + ggplot_scale范例在这里不适用于AK和HI,因为ggplot没有将额外的层/尺度与注释相关联。为了解决这个问题,我们必须使用choroplethr的面向对象特性:

代码语言:javascript
复制
c = CountyChoropleth$new(Res)
c$title = "All United States Medical Residencies"
c$ggplot_scale = scale_fill_manual(values=c("None" = "#ffffffff", "MD" = "#64acbe", "DO" = "#c85a5a", "Both" = "#574249"), 
                                   name="Types of Medical Residencies")
c$render()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61771543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档