【问题标题】:How to specify bin colors for plot_usmap?如何为 plot_usmap 指定 bin 颜色?
【发布时间】:2020-06-26 22:07:32
【问题描述】:

我希望创建一个对色阶进行更多控制的热图,特别是我希望为与特定颜色对应的值范围设置 bin。

下面我提供了一些示例代码来生成一些数据并绘制图表。问题似乎在于它如何将颜色映射到中断,这不是 1:1 对应关系,当我在中断中添加更多百分位数时,它似乎会拉伸颜色。

这似乎不是一个大问题,但是当我将其应用于整个美国数据集时,我正在使用的配色方案真的崩溃了。

library(usmap)
library(ggplot2)

fips <- seq(45001,45091,2)
value <- rnorm(length(fips),3000,10000)
data <- data.frame(fips,value)
data$value[data$value<0]=0

plot_usmap(regions='counties',data=data,values="value",include="SC") +
  scale_fill_stepsn(breaks=c(as.numeric(quantile(data$value,seq(.25,1,.25)))),
                  colors=c("blue","green","yellow","red"))

plot_usmap(regions='counties',data=data,values="value",include="SC") +
  scale_fill_stepsn(breaks=c(as.numeric(quantile(data$value,seq(0,1,.1)))),
                    colors=c("blue","green","yellow","red"))

#data not provided for this bit
plot_usmap(regions='counties',data=datar,values="1969",exclude=c("AK","HI")) +
  scale_fill_stepsn(breaks=c(as.numeric(quantile(datar$`1969`,seq(0,1,.1)))),
                    colours=c("blue","green","yellow","red"))

【问题讨论】:

  • scale_fill_continuous(low = "grey", high = "darkgreen", name = "USA MAP", label = scales::comma
  • "对应于特定颜色的值范围的分箱。"
  • 数据涉及大得多的高百分位数,所以我想使用 bin,而不是连续色标
  • 有趣的是,几天前就有一个非常相似的帖子。幸运的是,我在这个线程上留下了我的第一个答案,因为它应该完全满足您的需要:创建剪辑,然后根据结果因子水平进行休息和标签stackoverflow.com/a/62544405/7941188

标签: r ggplot2 gis usmap


【解决方案1】:

一种方法是手动对百分位数进行分类,然后将因子水平用于手动中断和标签。

我从来没有使用过usmap的这个高级功能,所以我不知道如何处理这个出现的警告。个人更喜欢并推荐使用ggplot + geom_polygon或朋友以获得更多控制权。

library(usmap)
library(ggplot2)

fips <- seq(45001,45091,2)
value <- rnorm(length(fips),3000,10000)
mydat <- base::data.frame(fips,value)
mydat$value[mydat$value<0]=0

mydat$perc_cuts <- as.integer(cut(ecdf(mydat$value)(mydat$value), seq(0,1,.25)))


plot_usmap(regions='counties',
           data=mydat,
           values="perc_cuts",include="SC") +
  scale_fill_stepsn(breaks= 1:4, limits = c(0,4), labels = seq(.25, 1, .25),
                    colors=c("blue","green","yellow","red"),
                    guide = guide_colorsteps(even.steps = FALSE))
#> Warning: Use of `map_df$x` is discouraged. Use `x` instead.
#> Warning: Use of `map_df$y` is discouraged. Use `y` instead.
#> Warning: Use of `map_df$group` is discouraged. Use `group` instead.

reprex package (v0.3.0) 于 2020 年 6 月 27 日创建

【讨论】:

  • 谢谢 Tjebo,我认为手动剪切的想法很有帮助。我一直在考虑使用ggplot + geom_polygon,但我手头没有任何 shp 文件……所以也许plot_usmap 是一个懒惰的捷径。
  • @dobothor 查看r-spatial.org/r/2018/10/25/ggplot2-sf-2.html,关于美国的部分可能会对您有所帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 2017-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多