library(viridis)
#c1=viridis(n=10, alpha = 1, begin = 0, end = 1, direction = 1); c1
c1=viridis(10, alpha = 1, begin = 0, end = 1, direction = 1, option = "A"); c1
## [1] "#000004FF" "#180F3EFF" "#451077FF" "#721F81FF" "#9F2F7FFF" "#CD4071FF" "#F1605DFF" "#FD9567FF" "#FEC98DFF"
## [10] "#FCFDBFFF"
# n 色彩个数
# alpha 不透明度,1表示完全不透明,0表示完全透明。
# begin 和 end 表示 hue 开始和结束的位置[0,1]
# direction 颜色方向,1从深到浅,-1反之。
# option 表示8种颜色方案,可以换前面的函数名,也可以换 option 种的字母A-H
par(mar=c(0,0,0,0))
barplot( rep(1, length(c1)), col=c1,
border=NA, yaxt='n', space=0, main="")
scale_fill_viridislibrary(viridis)
library(ggplot2)
set.seed(2023)
ggplot(data.frame(x = rnorm(10000), y = rnorm(10000)), aes(x = x, y = y)) +
geom_hex() + #六边形表示数据密度
coord_fixed() + #长宽比例一致
scale_fill_viridis() + #填充颜色
theme_bw() #主题
scale_color_viridislibrary(viridis)
library(ggplot2)
# 离散颜色可用scale_color_viridis()
p = ggplot(mtcars, aes(wt, mpg))+
geom_point(aes(colour = factor(cyl)), size=4) +
theme_bw()
p + scale_color_viridis(discrete=TRUE) #默认 option="D"
# 其他配色方案
p + scale_color_viridis(discrete=TRUE, option="H")
该R包目前提供了8个渐变色方案。默认方案是 viridis(D)。
# 8个配色方案
colors=data.frame(
color=c("magma", "inferno", "plasma", "viridis",
"cividis", "rocket", "mako", "turbo"),
simple=LETTERS[1:8]
)
# 绘图函数
draw=function(color, color.simple, title="", n=100){
if(title==""){
title=paste0(color, "(", color.simple ,")", ", n=", n)
}
#print(title)
cols=do.call(color, list(n, alpha = 1, begin = 0, end = 1, direction = -1) )
barplot( rep(1, length(cols)), col=cols,
border=NA, yaxt='n', space=0, main=title)
}
# 开始绘图
par(mfrow=c(8,2), mar=c(0,0,1.5,0) )
for(i in 1:8){
#print( colors[i, 'color'])
draw(colors[i, 'color'], colors[i, 'simple'], n=10)
draw(colors[i, 'color'], colors[i, 'simple'], n=100)
}
前7种渐变色都特别适合用于画热图,最后一种 turbo 目测不太适合。
# 生成模拟数据
set.seed(2022)
test = matrix(rnorm(200), 20, 10)
test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
colnames(test) = paste("Test", 1:10, sep = "")
rownames(test) = paste("Gene", 1:20, sep = "")
#
dim(test)
## [1] 20 10
# Draw heatmaps
library(pheatmap)
pheatmap(test)
# 使用配色方案 viridis
pheatmap(test, color = viridis(8), main="viridis")
# 使用配色方案 mako
pheatmap(test, color = viridis(8, option = "G"), main="mako")