R语言---颜色选择和设置

2023-10-27

在使用R绘图调色的时候,每次都要选择很久,有时候也会忘记相关的记录,特此总结一些自己常用的。

1、R base颜色版

1.1 R base颜色

R语言中颜色设置使用通用的颜色代码就行,RGB格式、16进制格式,或者使用相关的颜色字符。
参考下面的链接就可以选择颜色了,但是这个只有字符显示。

http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf

此外看到一个颜色很全的博客,记录了相关的颜色代码:

https://blog.csdn.net/bone_ace/article/details/47362619

在这里插入图片描述

我们调用多个颜色的时候可以使用rainbow():

plot(rep(1,50),col=rainbow(50), pch=19,cex=2)

在这里插入图片描述

1.2 R ggplot 默认颜色反转

ggplot默认配色及颜色翻转(reversed colors),scale_color_hue和scales包中的hue_pal()(n)

library(gridExtra) ## 排版图片
library(ggplot2) ## ggplot绘图
library(scales) ## 调用hue_pal函数

## 参考
https://stackoverflow.com/questions/45868625/how-to-reverse-the-default-color-palette-for-ggplot2
## 下面两个效果一样,默认scale_color_hue(direction = 1)
p1 <- ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species))+
  geom_point(size=2) + theme_bw()
p2 <- ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) +
  geom_point(size=2) + theme_bw() + scale_color_hue(direction = 1)
 ## direction = -1 会使颜色反过来. 
## 需要调整起始点使得反过来颜色顺序一致,使用 h.start=90
p3 <- ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species))+
  geom_point(size=2)+  scale_color_hue(direction = -1, h.start=90) + theme_bw()


# Get the colors with 3 classes
cols <- hue_pal()(3)  

# Plot the data and reverse the color
p4 <- ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) +
  geom_point(size=2) + scale_color_manual(values = rev(cols)) + theme_bw()

grid.arrange(p1, p2,p3,p4, 
             ncol = 2, nrow = 2)

从图中可以看出,上面连个图的颜色设置与下面的设置相反,默认base R中的颜色反转使用rev(cols)即可。
在这里插入图片描述

2、R颜色包RColorBrewer

其实,上面的颜色已经可以满足我们的颜色选择需求,但是在选择颜色配对时,我们可能不会搭配,导致图片视觉诡异。
因此,使用一些开发好的主题更为明智:

library(RColorBrewer)
par(mar=c(3,4,2,2))
display.brewer.all()
br_pal <- brewer.pal(11,"RdYlBu")  ## 提取某个颜色的颜色值
br_pal
[1] "#A50026" "#D73027" "#F46D43" "#FDAE61" "#FEE090" "#FFFFBF" "#E0F3F8" "#ABD9E9" "#74ADD1"
[10] "#4575B4" "#313695"

下图的三个颜色集合分别对应:sequential、qualitative、diverging
在这里插入图片描述

此外这些颜色可以在交互网站colorbrewer2中寻找,网站colorbrewer2(https://colorbrewer2.org)也包含以下三种不同的模式(sequential、qualitative、diverging),有不同的选项来查询选择颜色代码。
使用时,也可以查看下面的链接:

http://rstudio-pubs-static.s3.amazonaws.com/5312_98fc1aba2d5740dd849a5ab797cc2c8d.html

此外,下面是也是一个R包可以选择,但是这个很依赖自己选择,输入下面的命令,会出现可点击的选择框,不太方便。

library("colorspace")
pal <- choose_palette()

在这里插入图片描述

3、R颜色包wesanderson、viridis、ggsci

3.1 wesanderson package
## github地址
https://github.com/karthik/wesanderson
require(wesanderson)
names(wes_palettes)
 [1] "BottleRocket1"  "BottleRocket2"  "Rushmore1"      "Rushmore"       "Royal1"        
 [6] "Royal2"         "Zissou1"        "Darjeeling1"    "Darjeeling2"    "Chevalier1"    
[11] "FantasticFox1"  "Moonrise1"      "Moonrise2"      "Moonrise3"      "Cavalcanti1"   
[16] "GrandBudapest1" "GrandBudapest2" "IsleofDogs1"    "IsleofDogs2"

col = wes_palette("Zissou1", 10, type = "continuous")

height = 1:10
barplot(height, border = "white",col=wes_palette("Zissou1", 10, type = "continuous"),space = 0)

在这里插入图片描述

3.2 viridis package
## 参考链接
https://cran.r-project.org/web/packages/viridis/vignettes/intro-to-viridis.html
require(viridis)

下面是viridis包的几个颜色主题,可以作为普通的颜色list输入:
在这里插入图片描述

viridis(10) ## viridis 主题中提取10个颜色
inferno(10) ## inferno 主题中提取10个颜色
plot(1:10, col=viridis(10),cex=4,pch=20)

在这里插入图片描述
ggplot同样可以直接使用这个颜色主题scale_color_viridisscale_fill_viridis

p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point(size=4, aes(colour = factor(cyl))) +
    scale_color_viridis(discrete=T,option = "inferno") +
    theme_bw()
3.3 ggsci package

ggsci应该是只有ggplot配色:

## 参考ggsci链接
https://cran.r-project.org/web/packages/ggsci/vignettes/ggsci.html

4、R函数生成多个连续色

有时候需要使用多个颜色,eg,50个颜色时候,,默认rainbow颜色不喜欢,这时候可以考虑函数生成。

4.1 wesanderson和viridis函数生成多个连续颜色
require(wesanderson)
wes_palette("Zissou1", 5, type = "discrete")
wes_palette("Zissou1", 50, type = "continuous")

![在这里插入图片描述](https://img-blog.csdnimg.cn/4731d523db2f4a4b86361564a2a70c87.png

require(viridis)
viridis(50)
 [1] "#440154FF" "#46085CFF" "#471064FF" "#48176AFF" "#481F70FF" "#482576FF" "#472C7AFF" "#46337EFF"
 [9] "#443983FF" "#423F85FF" "#404588FF" "#3E4A89FF" "#3C508BFF" "#39568CFF" "#365C8DFF" "#34618DFF"
[17] "#31668EFF" "#2F6B8EFF" "#2D718EFF" "#2B758EFF" "#297A8EFF" "#277F8EFF" "#25848EFF" "#23898EFF"
[25] "#218E8DFF" "#20928CFF" "#1F978BFF" "#1E9D89FF" "#1FA187FF" "#21A685FF" "#25AB82FF" "#29AF7FFF"
[33] "#30B57CFF" "#38B977FF" "#40BD72FF" "#4AC16DFF" "#55C568FF" "#5FCA61FF" "#6BCD5AFF" "#77D153FF"
[41] "#84D44BFF" "#91D742FF" "#9FDA3AFF" "#ACDC30FF" "#BADE28FF" "#C8E020FF" "#D6E21AFF" "#E4E419FF"
[49] "#F1E51DFF" "#FDE725FF"
barplot(rep(50,50),col=viridis(50),space=0,border = viridis(50))

在这里插入图片描述

4.2 使用colorRampPalette获取多个连续颜色

上面的函数可以将一些diverged colors变换为多个连续的值,例如下面的RColorBrewer函数包中"Spectral"中仅为11个颜色最多,当使用到连续型pheatmap中时,这些颜色就不够用了。
此时,可以使用colorRampPalette函数。

## colorRampPalette函数为系统base R中的函数,可以直接调用的
colfunc<-colorRampPalette(brewer.pal(11,"Spectral"))
colfunc<-colorRampPalette(c("red","yellow","springgreen","royalblue")) 
plot(rep(1,50),col=(colfunc(50)), pch=19,cex=2)  ## 取50个颜色,颜色图片如下所示
color=colfunc(50) ## 取到50个连续变换色

在这里插入图片描述

以上仅记录。

  1. http://blog.csdn.net/bone_ace/article/details/47362619 (颜色大全)
  2. http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf (颜色大全)
  3. https://r-graph-gallery.com/38-rcolorbrewers-palettes.html (RColorBrewer)
  4. https://colorbrewer2.org/#type=qualitative&scheme=Set3&n=12(colorbrewer2网站)
  5. https://www.nceas.ucsb.edu/sites/default/files/2020-04/colorPaletteCheatsheet.pdf
  6. https://stackoverflow.com/questions/45868625/how-to-reverse-the-default-color-palette-for-ggplot2 (默认ggplot颜色反转)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言---颜色选择和设置 的相关文章

随机推荐

  • javascript 创建对象(object)

  • javascript 中键盘快捷键(键盘事件)

    如果想要在javascript中使用快捷键 可以利用 event ctrlKey event shiftKey event altKey 来进行判断 对应的是ctrl shift 与alt 按键 事件属性可返回一个布尔值 true fals
  • Flutter 判断网络可用性

    Flutter 判断网络可用性 依赖包 dependencies connectivity 0 4 2 代码 import package connectivity connectivity dart 2019 4 18 By GX 判断网
  • LeetCode 142.环形链表II

    给定一个链表的头节点 head 返回链表开始入环的第一个节点 如果链表无环 则返回 null 如果链表中有某个节点 可以通过连续跟踪 next 指针再次到达 则链表中存在环 为了表示给定链表中的环 评测系统内部使用整数 pos 来表示链表尾
  • Nodejs+Extjs+Mongodb开发第一天 Nodejs环境搭建

    一 装备 我个人PC环境是Ubuntu14 JDK7 所以下面的步骤及问题也是基于此进行及产生的 二 Nodejs及npm的安装 这个安装的过程在网上有很多教程 这里就不详细讲了 html view plain copy print sud
  • 一篇文章了解Java虚拟机,Java虚拟机内存详解

    虚拟机介绍 Java虚拟机 JVM 一种用于计算机设备的规范 可用不同的方式 软件或硬件 加以实现 编译虚拟机的指令集与编译微处理器的指令集非常类似 Java虚拟机包括一套字节码指令集 一组寄存器 一个栈 一个垃圾回收堆和一个存储方法域 J
  • unity面板的旋转次序和万向锁

    每个unity物体在面板上都有一个rotation值 那么这个旋转的数值是怎么得出来的呢 假如一个物体xyz的rotation值都不为零 我们拉动面板上的数值会有这样的发现 拉动y值时物体绕世界坐标的y轴也就是竖直方向做旋转 拉动z轴物体沿
  • php websocket 示例

    php使用websocket示例详解 一 php 中处理 websocket WebSocket 连接是由客户端主动发起的 所以一切要从客户端出发 第一步是要解析拿到客户端发过来的 Sec WebSocket Key 字符串 复制代码代码如
  • 2、centos7修改最大文件数

    1 file max 系统所有进程能够打开的文件数 查看当前值 cat proc sys fs file max 修改值 file max的值要大于nr open 如果不修改nr open 那么file max至少要大于1024 1024
  • springboot启动报错:Unable to start web server; nested exception is org.springframework................

    Spring Boot启动出现错误 错误内容大概的意思是 未能加载嵌入的供web应用加载的空间 是因为缺少ServletWebServerFactory bean 解决方法 添加注释 EnableAutoConfiguration
  • inline-block布局与float布局

    1 解释一下display的几个常用的属性值 inline block inline block inline 行内元素 使元素变成行内元素 拥有行内元素的特性 即可以与其他行内元素共享一行 不会独占一行 不能更改元素的height wid
  • 掌握 Linux 调试技术

    http www ibm com developerworks cn linux sdk l debug index html ibm pcon 在 Linux 上找出并解决程序错误的主要方法 Steve Best sbest us ibm
  • 使用tkinter编写一个非常简单的获取股价程序(数据源tushare)

    使用tkinter编写一个非常简单的获取股价程序 数据源tushare 先看结果 主界面 获取股票信息 为更新信息按钮 查询股票信息 为功能按钮 查询股票信息界面 点击查询后 输入起始终止时间 可以查看对应的价格 并绘制K线图 价格 K线图
  • mysql5.7免安装版本

    安装环境 Win10 64位 软件版本 MySQL 5 7 16 解压版 一 下载 点开下面的链接 链接 下载地址 B站安装视频地址 链接 安装视频地址 选择选择和自己系统位数相对应的版本点击右边的Download 此时会进到另一个页面 同
  • 怎么制作睡袋rust_【手工课堂第二十三期】宝宝睡袋DIY

    作者 宝宝知道 依米Yimi 大家好 又到我的手工课堂咯 我是依米 热爱手工 有时间必手工 这一期给大家带来宝宝睡觉必备神器 仿踢睡袋 宝宝睡觉前 穿着睡袋来个bedtime story 睡前故事 真是极好的 睡袋是很多宝妈会选择的睡眠小物
  • 使用hiredis 实现异步设置发布订阅模式

    通过libevent实现订阅的回调事件 发布端代码如下 include
  • Unity3d 引擎原理详细介绍、Unity3D引擎架构设计

    体系结构 为了更好地理解游戏的软件架构和对象模型 它获得更好的外观仅有一名Unity3D的游戏引擎和编辑器是非常有用的 它的主要原则 Unity3D 引擎 Unity3D的是一个屡获殊荣的工具 用于创建交互式3D应用程序在多个platfor
  • vscode 中如何删除空行

    在 Visual Studio Code 中 可以使用以下步骤来删除空行 打开你想要删除空行的文件 按下 Ctrl F 打开查找功能 在查找框中输入 s 点击 查找全部 按钮 这样就可以找到文件中的所有空行 选中所有空行 然后按下 Dele
  • SIM卡物理形态与引脚定义

    SIM Subscriber Identity Moudle 用户身份模块 大家并不陌生 有了它才可以进行通话服务 本篇文章介绍下SIM的基础知识与接口形态 物理规格 SIM物理规格随着设备小型化发展也是一直在减小 如下图所示 SIM卡 引
  • R语言---颜色选择和设置

    R语言颜色选择和设置 1 R base颜色版 1 1 R base颜色 1 2 R ggplot 默认颜色反转 2 R颜色包RColorBrewer 3 R颜色包wesanderson viridis ggsci 3 1 wesanders