【问题标题】:Modify viridis palette in ggplot在 ggplot 中修改 viridis 调色板
【发布时间】:2018-09-29 00:23:37
【问题描述】:

我正在尝试通过一个主要是数字的因素为 ggplot 着色,如下所示:

iris %>%
  ggplot(aes(Sepal.Length, Sepal.Width, color = cut(Petal.Length, 0:7))) + 
  geom_point() + 
  scale_color_viridis_d()

我想做的是对(0,1] 值进行特殊处理并将其着色为红色,但保留其余值的绿色渐变。我知道我可以change the color on the fly,但我想知道是否也可以构建一个新的离散调色板,将红色作为其第一种颜色,然后是渐变色,这将使代码更具可重用性。

因此,更普遍的问题是:是否可以轻松地在现有的离散调色板中添加/删除/编辑颜色?

【问题讨论】:

  • scale_color_viridis_d 属于哪个包?
  • scale_color_manual(values = c("red", viridis::viridis(6)))?
  • D'oh,这比我想象的要容易方式。 @seasmith,你想把它作为答案提交吗?
  • 再想一想:还有没有办法为连续调色板做到这一点?
  • 对于连续规模,我认为您需要拨打continuous_scale();构建您的自定义颜色比例函数并将其传递给 palette 参数

标签: r ggplot2


【解决方案1】:

这与@seasmith 的答案基本相同,除了添加了将调色板保存到变量以供以后使用。我经常这样做是为了显式设置NA 颜色,然后在多个绘图中使用调色板。

其他包具有与viridis 类似的功能:例如,您可以从RColorBrewer::brewer.pal 获取ColorBrewer 调色板,从rcartocolor::carto_pal 获取CartoColor 调色板,或从与调色板。

library(tidyverse)

plasma_pal <- c("red", viridis::plasma(n = 6))

plasma_pal
#> [1] "red"       "#0D0887FF" "#6A00A8FF" "#B12A90FF" "#E16462FF" "#FCA636FF"
#> [7] "#F0F921FF"

iris %>%
    ggplot(aes(Sepal.Length, Sepal.Width, color = cut(Petal.Length, 0:7))) + 
    geom_point() +
    scale_color_manual(values = plasma_pal)

reprex package (v0.2.0) 于 2018 年 4 月 19 日创建。

【讨论】:

    【解决方案2】:

    需要致电scale_color_manual()

    iris %>%
      ggplot(aes(Sepal.Length, Sepal.Width, color = cut(Petal.Length, 0:7))) + 
      geom_point() + 
      scale_color_manual(values = c("red", viridis::viridis(6)))
    

    【讨论】:

      猜你喜欢
      • 2020-11-27
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多