一样平常瞎掰
一图胜千言,分析确其作为一种显现情势在出现数据效果时的重要性。虽说图的本质是用来展示效果,其最重要的功能是以简朴的情势分析数据中蕴含的意义,但偶尔候悦目标外表也是一种加分项,比方图型的布局,颜色搭配等。好的颜色搭配不但看起来赏心悦目,更重要的作用应该是能增长数据中的辨识度,给人一览无余的感觉,而不是晕倒在五彩斑斓的迷离中。固然俺也不善于颜色搭配,但这并不妨碍咱站在巨人的肩膀上来为图增加一抹色彩。下面咱们就来谈谈R语言里,那些好用的配色方案。
RColorBrewer
RColorBrewer包做为老牌调色板,其提供了3类调色板:1、一连性(sequential)
,天生一系列一连渐变的颜色(共18组颜色,每组9个渐变色);2、 离散型(diverging),天生两端深色、中部淡色的系列颜色(共9组颜色,每组11个颜色),可用来标志数据中的离群点,实用于突显极度数值;3、定性型(qualitative),天生一些列相互差异比力显着的颜色,通常用来标志分类数据。
- 颜色查看
display.brewer.all可用来展示预设调色板,默认展示全部调色板,也可指定名称展示某个调色板。brewer.pal.info也可用来查看调色板的信息。
display.brewer.all(type='seq')display.brewer.all(type='div')display.brewer.all(type='qual')display.brewer.all(6, select='Set1')display.brewer.all()效果如下:
- 颜色使用
brewer.pal函数用来使用调色板的颜色,须要两个参数:第一个指定颜色数量,最大为选取的调色板的颜色个数;第二个是调色板名称:
mycolor <- brewer.pal(8,'Set1')mycolor[1] "#E41A1C" "#377EB8" "#4DAF4A" "#984EA3" "#FF7F00" "#FFFF33" "#A65628" "#F781BF"image(1:8,1,as.matrix(1:8),col=mycolor,xlab='',ylab='',axes=F)效果如下:
- 自界说颜色
colorRampPalette函数可以根据给定的颜色返回一个颜色天生函数,可以调用这个颜色函数天生一系列颜色,数量可以自界说。该方法很得当天生渐变色:
mycolor <- colorRampPalette(c('red','blue'))(10)mycolor [1] "#FF0000" "#E2001C" "#C60038" "#AA0055" "#8D0071" "#71008D" "#5500AA" [8] "#3800C6" "#1C00E2" "#0000FF"image(1:10,1,as.matrix(1:10),col=mycolor,xlab='',ylab='',axes=F)效果如下:
colorRamp函数也可根据给定颜色返回一个颜色函数,然后调用颜色来天生一系列颜色,该方法会返回一个矩阵,内含RGB格式的颜色编码,一行一个颜色,可以借助rgb函数来解读:
colmat <- colorRamp(c("blue", "green"))((0:4)/4)colmat [,1] [,2] [,3][1,] 0 0.00 255.00[2,] 0 63.75 191.25[3,] 0 127.50 127.50[4,] 0 191.25 63.75[5,] 0 255.00 0.00mycolor <- rgb(colmat,max=255)mycolor [1] "#0000FF" "#003FBF" "#007F7F" "#00BF3F" "#00FF00"image(1:5,1,as.matrix(1:5),col=mycolor,xlab='',ylab='',axes=F)效果如下:
使用该方法须要留意一点,调用颜色函数时,输入的是[0-1]的数字向量,如这里的(0:4)/4为向量c(0.00, 0.25, 0.50, 0.75, 1.00),一个数字会天生一个颜色。
colorRamp2
colorRamp2函数来自于R包circlize,从名字可以看出该函数与上面的colorRamp关系。该函数根据指定端点向量和颜色向量返回一个颜色函数,然后调用颜色函数时输入一个数字向量,就会根据值的巨细映射差别的颜色。可见,该函数很实用于热图:
library(circlize)col_fun <- colorRamp2(c(-1, 0, 1), c("green", "white", "red"))mycolor <- col_fun(c(-2, -1, -0.5, 0, 0.5, 1, 2))mycolor[1] "#00FF00FF" "#00FF00FF" "#B1FF9AFF" "#FFFFFFFF" "#FF9E81FF" "#FF0000FF" "#FF0000FF"image(1:5,1,as.matrix(1:5),col=mycolor,xlab='',ylab='',axes=F)效果如下:
DiscretePalette_scCustomize
该函数来自于单细胞可视化scCustomize包,内里内置了两大类颜色调色板:
- Continuous Palettes
viridis_plasma_dark_high
viridis_plasma_light_high
viridis_magma_dark_high
viridis_magma_light_high
viridis_inferno_dark_high
viridis_inferno_light_high
viridis_dark_high
p1 <- FeaturePlot_scCustom(seurat_object = pbmc, features = "CD3E")p2 <- FeaturePlot_scCustom(seurat_object = pbmc, colors_use = viridis_magma_dark_high, features = "CD3E")p3 <- FeaturePlot_scCustom(seurat_object = pbmc, colors_use = viridis_inferno_dark_high, features = "CD3E")p4 <- FeaturePlot_scCustom(seurat_object = pbmc, colors_use = viridis_light_high, features = "CD3E")效果如下:
- Discrete Palettes
alphabet (24)
alphabet2 (24)
glasbey (32)
polychrome (36)
stepped (24)
ditto_seq (40)
varibow (Dynamic)
PalettePlot(palette = DiscretePalette_scCustomize(num_colors = 26, palette = "alphabet"))PalettePlot(palette = c("color1", "color2", ...)效果如下:
竣事语
颜色搭配对于可视化来说还是有肯定影响的,固然说各人的审雅观大概不划一,没有须要寻求让全部人都认可的美,但在不太过淹灭时间的基础上做出符合大众审美的图岂不是美哉!究竟,图是用来展示给别人看的,美不雅观大概影响到的不但仅是图像本身了!既然,现在有了这么多现成的配色方案,咱们也可以随手为本身的图润色来提拔一下颜值了。
往期回顾
saddleplot | A/B compartments
双曲线火山图一键拿捏
ChIP-seq数据质控
ChatGPT!见证AI的气力!
ChIPseeker画图函数借用
|