修改ggplot中的viridis调色板

时间:2018-04-18 16:56:49

标签: r ggplot2

我试图通过一个主要是数字的因子为ggplot着色,如下所示:

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

我想要做的是特殊情况下(0,1]值和红色的颜色,但保留其余值的viridis渐变。我知道我可以change the color on the fly但是我想知道是否也可以构造一个新的离散调色板,其中红色作为其第一种颜色和其后的渐变,这将使代码更加可重复使用

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

2 个答案:

答案 0 :(得分: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)))

答案 1 :(得分:1)

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

其他软件包具有与viridis类似的功能:例如,您可以从RColorBrewer::brewer.pal获取ColorBrewer调色板,从rcartocolor::carto_pal获取CartoColor调色板,或者从ggthemes获取任何一个调色板来自与调色板同名的函数。

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-04-19。