ggplot地图填充渐变颜色

时间:2020-03-17 21:02:25

标签: r ggplot2

我正在用颜色填充ggplot + geom_sf。我数据中的大多数值(value_pop在1到30之间,只有极少数的离群值达到350。

我的代码如下

ggplot(df, aes(fill=value_pop))+
  geom_sf()+
  scale_fill_gradientn(colours=rev(brewer.pal(6,"RdYlBu")),
                       name="Susirgimai\n/100.000 gyventojų",
                       na.value = "grey100", 
                       values =  rescale(seq(0, 400, length.out = 6)))

我想要的是一个跟随的比例/传奇,以及地图的颜色

enter image description here

,所以我会在地图上看到较低值的变化,但是我的代码会产生

enter image description here

关于如何更改scale_fill_gradientn(...)参数的任何建议,以便我可以手动设置值?我宁可不要将value_pop分成几组,而要保留数字。 非常感谢

1 个答案:

答案 0 :(得分:2)

您可以使用trans = log进行对数转换:

library(ggplot2)
library(viridis)
#> Loading required package: viridisLite
nc <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE)
nc$value_pop <- c(sample(1:30, nrow(nc)-6, replace = TRUE), 66, 120, 150, 200, 330, 350)
my_breaks <- c(1, 3, 10, 32, 100, 316, 1000)
ggplot(nc, aes(fill = value_pop)) +
    geom_sf()+
    scale_fill_gradientn(colours=rev(magma(6)),
                         name="Susirgimai\n/100.000 gyventojų",
                         na.value = "grey100", 
                         trans = "log",
                         breaks = my_breaks, labels = my_breaks)

reprex package(v0.3.0)于2020-03-17创建