Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R tips: R中的颜色配置方案

R tips: R中的颜色配置方案

作者头像
生信菜鸟团
发布于 2021-12-01 09:42:41
发布于 2021-12-01 09:42:41
3.9K00
代码可运行
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团
运行总次数:0
代码可运行

数据可视化不可避免的就是要选择一些颜色方案,颜色方案除了手动设置之外,在R中也有自动生成颜色方案的工具。

R中的HCL配色方案

HCL本意是和RGB HSV等一样的颜色空间的术语,由于这里所用的颜色方案在R中是hcl.pals函数,所以就称为HCL配色方案了。 HCL相比较HSV等颜色空间的一个重要优点就是颜色的视觉明度是均一的,在R中也是推荐使用hcl颜色方案,不推荐使用rainbow等颜色方案了。 有关于HCL的有点,可以参看https://jessieji.com/2020/hcl-instead-of-hsl。

hcl.pals可以查看内置的hcl颜色方案:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hcl.pals("qualitative")
# [1] "Pastel 1" "Dark 2"   "Dark 3"   "Set 2"    "Set 3"    "Warm"     "Cold"     "Harmonic" "Dynamic" 

hcl.pals("sequential")
# [1] "Grays"         "Light Grays"   "Blues 2"       "Blues 3"       "Purples 2"     "Purples 3"     "Reds 2"        "Reds 3"        "Greens 2"     
# [10] "Greens 3"      "Oslo"          "Purple-Blue"   "Red-Purple"    "Red-Blue"      "Purple-Orange" "Purple-Yellow" "Blue-Yellow"   "Green-Yellow" 
# [19] "Red-Yellow"    "Heat"          "Heat 2"        "Terrain"       "Terrain 2"     "Viridis"       "Plasma"        "Inferno"       "Rocket"       
# [28] "Mako"          "Dark Mint"     "Mint"          "BluGrn"        "Teal"          "TealGrn"       "Emrld"         "BluYl"         "ag_GrnYl"     
# [37] "Peach"         "PinkYl"        "Burg"          "BurgYl"        "RedOr"         "OrYel"         "Purp"          "PurpOr"        "Sunset"       
# [46] "Magenta"       "SunsetDark"    "ag_Sunset"     "BrwnYl"        "YlOrRd"        "YlOrBr"        "OrRd"          "Oranges"       "YlGn"         
# [55] "YlGnBu"        "Reds"          "RdPu"          "PuRd"          "Purples"       "PuBuGn"        "PuBu"          "Greens"        "BuGn"         
# [64] "GnBu"          "BuPu"          "Blues"         "Lajolla"       "Turku"         "Hawaii"        "Batlow"      

hcl.pals("diverging")
# [1] "Blue-Red"      "Blue-Red 2"    "Blue-Red 3"    "Red-Green"     "Purple-Green"  "Purple-Brown"  "Green-Brown"   "Blue-Yellow 2" "Blue-Yellow 3"
# [10] "Green-Orange"  "Cyan-Magenta"  "Tropic"        "Broc"          "Cork"          "Vik"           "Berlin"        "Lisbon"        "Tofino"  

hcl.pals("divergingx")
# [1] "ArmyRose" "Earth"    "Fall"     "Geyser"   "TealRose" "Temps"    "PuOr"     "RdBu"     "RdGy"     "PiYG"     "PRGn"     "BrBG"     "RdYlBu"  
# [14] "RdYlGn"   "Spectral" "Zissou 1" "Cividis"  "Roma" 

可以发现颜色方案分为四类:qualitative、 sequential、 diverging、 divergingx,分别取二个相应的Palettes看一下颜色的效果如何。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 定义一个函数用于查看颜色的效果
showColors <- function(x, ...){
  barplot(rep(1, length(x)), col = x, axes = FALSE, ...)
}

选取hcl颜色方案是使用hcl.colors函数,比如从Pastel 1颜色方案中取10个颜色:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hcl.colors(10, palette = "Pastel 1")
# [1] "#FFC5D0" "#F6CBB7" "#E2D4A8" "#C5DCAB" "#A8E1BF" "#99E2D8" "#A4DDEF" "#C4D5FB" "#E4CBF9" "#F9C5E9"

showColors(hcl.colors(10, palette = "Pastel 1"), main = "Pastel 1")

四大配色方案中各随机选二个方案,查看效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 布局42列
opar <- par(no.readonly = TRUE)
par(mfrow = c(4, 2), mar = c(1,1,3,1))

for(panel in c('qualitative', 'sequential', 'diverging', 'divergingx')){
  pal <- sample(hcl.pals(panel), 2)
  for(p in pal){
    col_in_pal <- hcl.colors(10, p)
    showColors(col_in_pal, main = paste0(panel, ": ", p))
  }
}

# 复原布局
par(opar)

可以看到:

  • qualitative颜色方案的颜色有多种色调,常用于着色离散变量;
  • sequential的颜色方案中色调较少,体现了颜色的连续过渡,可以用于着色连续变量;
  • diverging和divergingx也是颜色的连续过渡,但是不同于sequential,它的颜色在深浅上存在一个中心点,中心点两侧颜色逐步加深过渡,这样的颜色方案适合有中心点的连续变量,比如相关性数据:数据范围是-1到1,0是中心点,于是两端的颜色需要两个深色,而中心点可以使用最浅的颜色。

RColorBrewer

RColorBrewer包的配色方案通过display.brewer.all查看,可以发现它的颜色方案也是类似的:sequential、qualitative和diverging。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RColorBrewer::display.brewer.all()

如果需要获取具体的颜色,可以使用brewer.pal函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RColorBrewer::brewer.pal(3, "Dark2")
# [1] "#1B9E77" "#D95F02" "#7570B3" 

不同于hcl的配色方案,RColorBrewer中颜色方案数量是固定的,不会对颜色进行自动插值,比如Dark2配色一共只有8个颜色,超过8个颜色也最多只返回8个颜色:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RColorBrewer::brewer.pal(Inf, "Dark2")
# [1] "#1B9E77" "#D95F02" "#7570B3" "#E7298A" "#66A61E" "#E6AB02" "#A6761D" "#666666"
# Warning message:
# In RColorBrewer::brewer.pal(Inf, "Dark2") :
#   n too large, allowed maximum for palette Dark2 is 8
# Returning the palette you asked for with that many colors

如果需要对颜色进行插值可以使用colorRampPalette函数来实现,比如将Dark2配色线性插值成50个颜色:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
par(mfrow = c(2, 1), mar = c(1,1,3,1))

dark2_cols <- RColorBrewer::brewer.pal(8, "Dark2")
showColors(dark2_cols)
showColors(colorRampPalette(dark2_cols)(50))

par(opar)

另外,ggplot2中修改color映射的scale_color_brewer和scale_fill_brewer也可以接受RColorBrewer的配色方案,自动调整颜色,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggplot2)
library(patchwork)

p <- ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) + geom_boxplot()
p2 <- p + scale_fill_brewer(palette = "Dark2")

p|p2
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
🤩 RColorBrewer | 再多的配色也能轻松搞定!~(二)
1写在前面 之前介绍了使用ggsci包进行配色,颜值很高,但有时候你可能需要更多的颜色。 本期介绍一下RColorBrewer包,万金油包,几乎适用任何情况。😘 2用到的包 rm(list = ls()) library(tidyverse) library(RColorBrewer) library(patchwork) 3示例数据 本期就用大名鼎鼎的iris吧。 dat <- iris 4查看所有配色 display.brewer.all() ---- Note! 这个包里包含3种配色,s
生信漫卷
2022/10/31
2.1K0
🤩 RColorBrewer | 再多的配色也能轻松搞定!~(二)
R语言中颜色搭配以及圆形条形图展示
大家在绘制图的时候是不是有的时候老师纠结颜色的搭配。今天给大家介绍一个可以自动搭配颜色的R包RColorBrewer。R包的安装载入就不再赘述。直接进入主题。
一粒沙
2019/07/31
2.7K0
R语言的一些配色的R包
是时候把生信技能树平台交给后辈了,前面我介绍了;ggplot2绘图基础功不扎实?看完这5个资源 有一个学员从头到尾学完了这些资源,成长为了绘图小牛,还有自己的公众号,我先邀请他投稿一个笔记,后面有机会再推荐他的公众号!
生信技能树
2020/11/11
1.5K0
R语言的一些配色的R包
R语言作图好看的秘籍:RColorBrewer调色板详解
数据框brewer.pal.info记录了 RColorBrewer 包中所有调色板的信息,先查看一下:
简说基因
2022/11/11
2.7K0
R语言作图好看的秘籍:RColorBrewer调色板详解
R语言之可视化①⑦调色板
在基础图中使用RColorBrewer调色板,brewer.pal()函数用于生成颜色矢量。
用户1359560
2019/02/22
4.4K0
R语言之可视化①⑦调色板
python的seaborn模块
Using named colors from the xkcd color survey
狼啸风云
2019/08/14
1K0
R语言中的颜色(四)-RColorBrewer包
RColorBrewer包提供了3类调色板,用户只需要指定配色方案的名称,就可以用包中的brewer.pal()函数生成颜色。这3类包括:
生信交流平台
2022/09/21
2.6K0
R语言中的颜色(四)-RColorBrewer包
R语言ggplot2科研数据作图配色的一些小技巧
大家好,在这里给大家介绍一下使用ggplot2绘图调色的几种小方法。正所谓绘图十分钟,调色一小时。图片的配色直接决定了图片质量的好坏。下面讲一下我平时绘图用到的调色工具。
用户7010445
2021/07/12
9.5K0
R语言ggplot2科研数据作图配色的一些小技巧
Seaborn从零开始学习教程(二)
在Seaborn的使用中,是可以针对数据类型而选择合适的颜色,并且使用选择的颜色进行可视化,节省了大量的可视化的颜色调整工作。
Python数据科学
2018/08/06
1.5K0
Seaborn从零开始学习教程(二)
审美不够,配色来凑,数量不够,拿啥来凑?
配色R包很多,比如ggsci,RcolorBrewer,我最喜欢的当属paletteer,它集百家之长,是大量配色R包的合体。
用户11414625
2024/12/20
1020
审美不够,配色来凑,数量不够,拿啥来凑?
Matplotlib从入门到精通05-样式色彩秀芳华
参考: https://datawhalechina.github.io/fantastic-matplotlib/%E7%AC%AC%E4%B8%80%E5%9B%9E%EF%BC%9AMatplotlib%E5%88%9D%E7%9B%B8%E8%AF%86/index.html
用户2225445
2023/10/16
3480
Matplotlib从入门到精通05-样式色彩秀芳华
文献配套GitHub发表级别绘图03-条形图
文章来源:"Preoperative immune landscape predisposes adverse outcomes in hepatocellular carcinoma patients with liver transplantation" (2021,npj Precision Oncology),数据与代码全部公开在https://github.com/sangho1130/KOR_HCC。
生信技能树
2022/03/03
1.6K0
文献配套GitHub发表级别绘图03-条形图
终于有人对Seurat包丑到哭的可视化出手了:年度爱用包!
以前我们做了一个Seurat包官方的可视化函数投票:可视化单细胞亚群的标记基因的5个方法,下面的5个基础函数相信大家都是已经烂熟于心了:
生信技能树
2024/12/09
5470
终于有人对Seurat包丑到哭的可视化出手了:年度爱用包!
R tips:cellphonedb细胞通讯网络图优化
上次讲到的使用cellphonedb进行细胞通讯分析,其中的网络图的效果不是特别好,本文会就网络图进行两个优化:
生信菜鸟团
2024/07/22
1790
R tips:cellphonedb细胞通讯网络图优化
上手即用,分组统计检验直方图的绘图脚本分享
发文章,写论文,分组统计检验直方图是最常见和最实用的,你是否还在烦恼如果把图画好,帮你解决困难啦!这里分享下同事新鲜写就的绘图脚本,自带了示例数据,可以一键出图,助力你的科研和学习。
用户1075469
2022/05/25
5870
上手即用,分组统计检验直方图的绘图脚本分享
Python:Choosing Colormaps in Matplotlib
Choosing Colormaps in Matplotlib Matplotlib has a number of built-in colormaps accessible via matplotlib.colormaps. There are also external libraries that have many extra colormaps, which can be viewed in the Third-party colormaps section of the Matplotlib documentation. Here we briefly discuss how to choose between the many options. For help on creating your own colormaps, see Creating Colormaps in Matplotlib.
Twcat_tree
2023/10/16
2730
Python:Choosing Colormaps in Matplotlib
「R」数据可视化22 : 怎么获取CNS级颜色搭配
第一个要介绍的是一个R包,叫做RColorBrewer。该包提供了一系列的色板,包括渐变的颜色和不同颜色的组合搭配(见下图)。
王诗翔呀
2022/01/21
2K0
「R」数据可视化22 : 怎么获取CNS级颜色搭配
【R语言】热图绘制-heatmap+RColorBrewer配色方案
也给大家介绍了如何使用R自带的heatmap函数+gplots的配色方案来绘制热图
生信交流平台
2022/09/21
3.2K0
【R语言】热图绘制-heatmap+RColorBrewer配色方案
R语言数据可视化综合指南
让我们快速浏览一下这张图表: 这张可视化数据图(最初用Tableau软件创建 )是如何利用数据可视化来帮助决策者的一个很好的例子。想象一下,如果这些信息通过表格来告诉投资者,你认为你会花多长时间来向他
CDA数据分析师
2018/02/08
2.7K0
R语言数据可视化综合指南
用R语言进行数据可视化的综合指南(一)
大数据文摘作品,欢迎个人转发朋友圈;其他机构、自媒体转载,务必后台留言,申请授权 编译|崔浩 校对|高航,姚佳灵 让我们快速浏览一下这张图表: 这张可视化数据图(最初用Tableau软件创建 )是如何利用数据可视化来帮助决策者的一个很好的例子。想象一下,如果这些信息通过表格来告诉投资者,你认为你会花多长时间来向他解释? 如今的世界里,随着数据量的不断增长,很难不用可视化的形式来呈现你数据里的全部信息。虽然有专门的工具,如Tableau, QlikView 和 d3.js,但没有任何东西能代替有很好可视化能力
大数据文摘
2018/05/21
1.2K0
推荐阅读
相关推荐
🤩 RColorBrewer | 再多的配色也能轻松搞定!~(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验