【问题标题】:Specify bin colours in binned colour/fill scales在分级颜色/填充比例中指定分级颜色
【发布时间】:2021-01-08 10:17:15
【问题描述】:

考虑使用scale_fill_gradientn() 手动指定颜色的以下情节...

library(ggplot2)
p <- ggplot(faithfuld) +
  geom_tile(aes(waiting, eruptions, fill = density))

p+  scale_fill_gradientn(colours=c("white","red","blue","green"),
                         limits=c(0,0.04))

reprex package (v0.3.0) 于 2021-01-08 创建

为(故意)丑陋的配色方案道歉。

现在,我更希望将其作为分档颜色,现在可以使用 scale_fill_stepsn() 来完成,就像这样。

p+  scale_fill_stepsn(colours=c("white","red","blue","green"),
                      breaks=seq(0.01,0.03,by=0.01),
                      limits=c(0,0.04))

reprex package (v0.3.0) 于 2021-01-08 创建

但是,您可以看到已选择的分箱颜色已被插值。相反,我想明确指定它们,例如[0.00,0.01] 是明确的白色,[0.01,0.02] 是红色等...我该怎么做?

标记

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    不幸的是没有scale_*_binned_manual(),所以恐怕你必须手动设置比例的values参数。因为scale_fill_stepsn() 函数将中断之间的中点作为颜色被插值的点(在变换空间中),所以您可以确保您的颜色正好落在这些中点上。

    library(ggplot2)
    p <- ggplot(faithfuld) +
      geom_tile(aes(waiting, eruptions, fill = density))
    
    
    p+  scale_fill_stepsn(colours=c("white","red","blue","green"),
                          breaks=seq(0.01,0.03,by=0.01),
                          limits=c(0,0.04),
                          values = scales::rescale(c(0.005, 0.015, 0.025, 0.035), 
                                                   from = c(0, 0.04)))
    

    reprex package (v0.3.0) 于 2021-01-08 创建

    【讨论】:

      【解决方案2】:

      这是我根据这个问题的答案找到的替代解决方案:

      Custom color palette for scale_fill_fermenter()

      代码本质上只是scale_fill_fermenter()底层代码的改版,而是使用manual_pal()直接指定调色板。

      library(ggplot2)
      p <- ggplot(faithfuld) +
        geom_tile(aes(waiting, eruptions, fill = density))
      
      p+  binned_scale("fill",
                       "foo",
                       ggplot2:::binned_pal(scales::manual_pal(c("white","red","blue","green"))),
                       guide="coloursteps",
                       breaks=seq(0.01,0.03,by=0.01),
                       limits=c(0,0.04),
                       show.limits=TRUE)
      

      reprex package (v0.3.0) 于 2021-01-10 创建

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-19
        • 1970-01-01
        • 2017-01-23
        • 1970-01-01
        • 2019-05-27
        • 1970-01-01
        • 1970-01-01
        • 2019-10-07
        相关资源
        最近更新 更多