取色板中的颜色
# 查看颜色
library(RColorBrewer)
display.brewer.all()
display.brewer.pal(5, "RdBu")
brewer.pal(3, "RdBu")
以下内容来自:https://www.datanovia.com/en/blog/top-r-color-palettes-to-know-for-great-data-visualization/
用于更改使用ggplot2包或R基本绘图函数生成的图形的默认颜色的顶部R调色板。
演示数据集
我们将使用R内置的iris
演示数据集。
head(iris, 6)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
创建一个按组着色的基本ggplot
您可以通过以下方式根据分组变量更改颜色:
- 将参数映射
color
到目标变量。这将应用于点,线和文本 - 将参数映射
fill
到目标变量。这将更改区域的填充颜色,例如箱形图,条形图,直方图,密度图等。
在我们的例子中,我们将映射选项color
,并fill
在分组变量Species
分别为散点图和箱形图。
使用Species
变量级别按组更改颜色:
library("ggplot2")
# Box plot
bp <- ggplot(iris, aes(Species, Sepal.Length)) +
geom_boxplot(aes(fill = Species)) +
theme_minimal() +
theme(legend.position = "top")
bp
# Scatter plot
sp <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_point(aes(color = Species)) +
theme_minimal()+
theme(legend.position = "top")
sp
Viridis调色板
在viridis
[R包(由西蒙·卡尼尔)提供了调色板,使美丽的情节是:打印机友好的,感知均匀,易于被那些色盲阅读。
如下安装并加载软件包:
install.packages("viridis") # Install
library("viridis") # Load
该viridis
软件包包含四个顺序的色标:“ Viridis”(主要选择)和三个具有类似属性的替代色标(“岩浆”,“血浆”和“地狱”)。
主要功能:
-
scale_color_viridis()
:更改点,线和文本的颜色 -
scale_fill_viridis()
:更改区域的填充颜色(箱形图,条形图等) -
viridis(n)
,magma(n)
,inferno(n)
和plasma(n)
:生成用于基情节,其中调色板n
是的颜色来返回数量。
请注意,函数scale_color_viridis()
和scale_fill_viridis()
具有一个名为的参数option
,该参数是一个字符串,指示要使用的colormap选项。共有四个选项:“岩浆”(或“ A”),“地狱”(或“ B”),“血浆”(或“ C”)和“ viridis”(或“ D”,默认选项)。
- ggplot2中的用法
library(ggplot2)
# Gradient color
ggplot(iris, aes(Sepal.Length, Sepal.Width))+
geom_point(aes(color = Sepal.Length)) +
scale_color_viridis(option = "D")+
theme_minimal() +
theme(legend.position = "bottom")
# Discrete color. use the argument discrete = TRUE
ggplot(iris, aes(Sepal.Length, Sepal.Width))+
geom_point(aes(color = Species)) +
geom_smooth(aes(color = Species, fill = Species), method = "lm") +
scale_color_viridis(discrete = TRUE, option = "D")+
scale_fill_viridis(discrete = TRUE) +
theme_minimal() +
theme(legend.position = "bottom")
- 基本图中的用法。使用该函数
viridis()
生成所需的颜色数量:
barplot(1:10, col = viridis(10))
RColorBrewer调色板
RColorBrewer软件包创建了一个漂亮的调色板。您应该首先按照以下步骤进行安装:install.packages("RColorBrewer")
。
要显示包装中的所有调色板,请键入以下内容:
library(RColorBrewer)
display.brewer.all()
该软件包包含3种类型的调色板:顺序,发散和定性。
- 顺序调色板(第一个颜色列表),适合从低到高(渐变)的有序数据。调色板名称为:蓝调,BuGn,BuPu,GnBu,绿色,灰色,橘子,OrRd,PuBu,PuBuGn,PuRd,Purples,RdPu,Reds,YlGn,YlGnBu YlOrBr,YlOrRd。
- 定性调色板(第二种颜色列表),最适合表示名义或分类数据。它们并不暗示组之间的大小差异。调色板名称为:重音,暗2,成对,柔和1,柔和2,设置1,设置2,设置3。
- 不同的调色板(第三种颜色列表),同样强调数据范围两端的中间范围临界值和极限值。不同的调色板是:BrBG,PiYG,PRGn,PuOr,RdBu,RdGy,RdYlBu,RdYlGn,光谱
RColorBrewer软件包还包括三个重要功能:
# 1\. Return the hexadecimal color specification
brewer.pal(n, name)
# 2\. Display a single RColorBrewer palette
# by specifying its name
display.brewer.pal(n, name)
# 3\. Display all color palette
display.brewer.all(n = NULL, type = "all", select = NULL,
colorblindFriendly = FALSE)
函数参数说明:
-
n
:调色板中不同颜色的数量,最少3种,最大数量取决于调色板。 -
name
:以上列表中的调色板名称。例如name = RdBu
。 -
type
:要显示的调色板类型。允许的值为以下之一:“ div”,“ qual”,“ seq”或“ all”。 -
select
:要显示的调色板名称列表。 -
colorblindFriendly
:如果为TRUE,则仅显示色盲友好调色板。
要仅显示色盲友好的酿酒机调色板,请使用以下R代码:
display.brewer.all(colorblindFriendly = TRUE)
您还可以通过如下指定其名称来查看单个RColorBrewer调色板:
# View a single RColorBrewer palette by specifying its name
display.brewer.pal(n = 8, name = 'Dark2')
# Hexadecimal color specification
brewer.pal(n = 8, name = "Dark2")
## [1] "#1B9E77" "#D95F02" "#7570B3" "#E7298A" "#66A61E" "#E6AB02" "#A6761D"
## [8] "#666666"
ggplot2中的用法。ggplot2中有两个色标功能可用于使用Brebrewer调色板:
-
scale_fill_brewer()
用于箱形图,条形图,小提琴图,点图等 -
scale_color_brewer()
用于线和点
# Box plot
bp + scale_fill_brewer(palette = "Dark2")
# Scatter plot
sp + scale_color_brewer(palette = "Dark2")
在基本图中的用法。该函数brewer.pal()
用于生成颜色向量。
# Barplot using RColorBrewer
barplot(c(2,5,7), col = brewer.pal(n = 3, name = "RdBu"))
灰色调色板
主要功能:
-
scale_fill_grey()
用于箱形图,条形图,小提琴图,点图等 -
scale_colour_grey()
用于点,线等
# Box plot
bp + scale_fill_grey(start = 0.8, end = 0.2)
# Scatter plot
sp + scale_color_grey(start = 0.8, end = 0.2)
科学期刊调色板
R软件包ggsci
包含一组高质量的调色板,这些调色板的灵感来自科学期刊,数据可视化库等中使用的颜色。
调色板作为ggplot2比例函数提供:
-
scale_color_npg()
和scale_fill_npg()
:Nature Publishing Group的调色板 -
scale_color_aaas()
和scale_fill_aaas()
:美国科学促进会调色板 -
scale_color_lancet()
和scale_fill_lancet()
:柳叶刀期刊调色板 -
scale_color_jco()
和scale_fill_jco()
:临床肿瘤学杂志调色板 -
scale_color_tron()
andscale_fill_tron()
:此调色板的灵感来自Tron Legacy中使用的颜色。当使用深色主题时,它适合显示数据。
您可以在ggsci包vignettes中找到更多示例。
请注意,对于基本图,可以使用相应的调色板生成器来创建颜色列表。例如,您可以使用:pal_npg(),pal_aaas(),pal_lancet(),pal_jco()等。
- ggplot2中的用法。我们将使用JCO和Tron Legacy调色板。
library("ggplot2")
library("ggsci")
# Change area fill color. JCO palette
ggplot(iris, aes(Species, Sepal.Length)) +
geom_boxplot(aes(fill = Species)) +
scale_fill_jco()+
theme_classic() +
theme(legend.position = "top")
# Change point color and the confidence band fill color.
# Use tron palette on dark theme
ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_point(aes(color = Species)) +
geom_smooth(aes(color = Species, fill = Species)) +
scale_color_tron()+
scale_fill_tron()+
theme_dark() +
theme(
legend.position = "top",
panel.background = element_rect(fill = "#2D2D2D"),
legend.key = element_rect(fill = "#2D2D2D")
)
- 基本图中的用法
par(mar = c(1, 3.5, 1, 1))
barplot(1:10, col = pal_jco()(10))
Wes Anderson调色板
从Github(devtools::install_github("karthik/wesanderson")
)安装最新的开发版本,或从CRAN(install.packages("wesanderson")
)安装。
它包含Wes Anderson电影中的16种调色板:
library(wesanderson)
names(wes_palettes)
## [1] "BottleRocket1" "BottleRocket2" "Rushmore1" "Royal1"
## [5] "Royal2" "Zissou1" "Darjeeling1" "Darjeeling2"
## [9] "Chevalier1" "FantasticFox1" "Moonrise1" "Moonrise2"
## [13] "Moonrise3" "Cavalcanti1" "GrandBudapest1" "GrandBudapest2"
包中用于生成颜色向量的键R函数是
wes_palette(name, n, type = c("discrete", "continuous"))
-
name
:所需调色板的名称 -
n
:所需的颜色数。不幸的是,大多数调色板现在只有4或5种颜色。 -
type
:“连续”或“离散”。如果要自动在颜色之间进行插值,请使用连续。
如果您需要的颜色比调色板中通常所能找到的更多,则可以使用连续调色板在现有颜色之间进行插值。
可用的调色板是:
ggplot2中的用法:
library(wesanderson)
# Discrete color
bp + scale_fill_manual(values = wes_palette("GrandBudapest1", n = 3))
# Gradient color
pal <- wes_palette("Zissou1", 100, type = "continuous")
ggplot(heatmap, aes(x = X2, y = X1, fill = value)) +
geom_tile() +
scale_fill_gradientn(colours = pal) +
scale_x_discrete(expand = c(0, 0)) +
scale_y_discrete(expand = c(0, 0)) +
coord_equal()
在基本图中的用法:
barplot(1:10, col = wes_palette("Zissou1", 10, type = "continuous"))
R基本调色板
存在可以被用来生成的n个连续的颜色的矢量5个R基函数:rainbow(n)
,heat.colors(n)
,terrain.colors(n)
,topo.colors(n)
,和cm.colors(n)
。
在R基本图中的用法:
barplot(1:5, col=rainbow(5))
# Use heat.colors
barplot(1:5, col=heat.colors(5))
# Use terrain.colors
barplot(1:5, col=terrain.colors(5))
# Use topo.colors
barplot(1:5, col=topo.colors(5))
# Use cm.colors
barplot(1:5, col=cm.colors(5))
结论
我们展示了顶部的R调色板,以定制由ggplot2包或R基本函数生成的图形。要点总结如下。
- 创建一个基本的ggplot。将
color
参数映射到因子或分组变量。
p <- ggplot(iris, aes(Sepal.Length, Sepal.Width))+
geom_point(aes(color = Species))
p
- 使用自定义色标手动设置调色板:
p + scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
- 使用对色盲友好的调色板:
cbp1 <- c("#999999", "#E69F00", "#56B4E9", "#009E73",
"#F0E442", "#0072B2", "#D55E00", "#CC79A7")
p + scale_color_manual(values = cbp1)
- 使用RColorBrewer调色板:
p + scale_color_brewer(palette = "Dark2")
- 使用翠绿色标:
library(viridis)
p + scale_color_viridis(discrete = TRUE)