如何在 R 中的渐变比例中创建值差距

How to create a gap of values in a gradient scale in R

我目前正在创建 U.S 的地图。在每个状态内具有变量计数梯度 ('totalvisits')。

有一个州的计数非常高(即 MA - 超过 8000),而其他所有州都小于 500。我是否有可能在渐变比例中创建一个间隙,以便跳过 500 - 8000 的值。我还想要一些可以更好地可视化较低值状态之间差异的东西,因为现在热图使它们看起来都具有相同的值(下图)

这是我当前的代码:

statebins_US <- 
  statebins(state_data = patient_origin_bystate, state_col = "region", value_col = "totalvisits", dark_label = "black", light_label = "white", font_size = 3) + 
  theme_statebins(legend_position="right") + 
  scale_fill_gradientn(colours = rev(brewer.pal(10, "Spectral")), na.value = "gray78") 
 

Current Heat Map - Where States of Lower Values all have Same Color

我不会回答你的问题,而是从另一个方向提出建议。如果您的值都是严格正数,我建议您改用 log-transformation。 (如果您的值包含负值或 0,您可以使用 pseudo-log 转换)

这是您问题的简要说明 mock-up,您的异常值很少。

library(ggplot2)

set.seed(0)
df <- expand.grid(LETTERS[1:6], LETTERS[1:6])
df$value <- rlnorm(nrow(df), meanlog = 6)

p <- ggplot(df, aes(Var1, Var2)) +
  geom_tile(aes(fill = value))

p + scale_fill_distiller(palette = "Spectral")

我的建议是使用对数变换的调色板,而不是不连续的调色板。在这种情况下,它应该使用更多种类的调色板。

p + scale_fill_distiller(palette = "Spectral", trans = "log10")

reprex package (v2.0.1)

于 2022-03-10 创建