2

我正在尝试制作美国各县的等值线地图。我的值范围很大,并且高度膨胀为 0,因此我想为图例和着色创建自定义箱。理想情况下,这将使用 ggplot。我还想为图例保留一个标准结构,以便我可以将相同的图例用于具有不同数据的多个等值线。

图例可能是 0、1-20、21-50、51-150、151-300、301-800,每个“bin”的颜色来自光谱或其他一些连续调色板。

scale_color_steps(),scale_fill_brewer()和其他类似的功能,即使使用breaksand limits or n.breaks,似乎也不起作用。有任何想法吗?

library(choroplethr)
library(choroplethrMaps)
library(ggplot2)
data(county.regions)

df <- tibble(region = county.regions$region, value = c(rep(0,2000), rep(1,1000), sample(2:800, 143)))  

county_choropleth(df) +
  scale_colour_steps(palette='Spectral', n.breaks = 8)
4

1 回答 1

3

实现所需结果的简单解决方案是设置num_colors = 1.country_choropleth

来自以下文档country_choropleth

num_colors在地图上使用的颜色数。值 0 使用发散比例(用于可视化负数和正数),值 1 使用连续比例(用于可视化异常值),而 [2, 9] 中的值将使用那么多分位数。

默认情况下num_colors = 7,这意味着连续数据被离散化,因此添加连续填充比例会引发Error: Binned scales only support continuous data.设置num_colors = 1数据不被分箱,我们可以应用自定义连续填充比例:

library(choroplethr)
library(choroplethrMaps)
library(ggplot2)
data(county.regions)

set.seed(42)

df <- tibble::tibble(region = county.regions$region, value = runif(3143, 0, 800))  

breaks <- c(0, 20, 50, 150, 300, 800)

county_choropleth(df, num_colors = 1) +
  scale_fill_stepsn(colors = RColorBrewer::brewer.pal(5, "Spectral"), breaks = breaks)

county_choropleth(df, num_colors = 1) +
  scale_fill_viridis_b(breaks = breaks) 

于 2020-06-26T07:50:21.053 回答