我试图通过一个主要是数字的因子为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但是我想知道是否也可以构造一个新的离散调色板,其中红色作为其第一种颜色和其后的渐变,这将使代码更加可重复使用
因此,更一般的问题是:可以在现有的离散调色板中轻松添加/删除/编辑颜色吗?
答案 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。