文章目录

  • 摘要
  • 前言
  • 离散变量
    • 默认定义scale_fill_discrete()
    • 色环系统 scale_fill_hue()
    • 灰度系统scale_fill_grey()
    • 调色板scale_fill_brewer()
  • 连续变量
    • 默认scale_fill_continous
    • 梯度scale_fill_gradient
    • 色板scale_fill_distiller/fermenter
  • 其它
    • 色盲色板
    • 完全自定义

摘要

推荐使用colorspace包,或者ggsci包中的色板进行配色。

  • scale_(fill/color)(continous/discrete/binned)(sequential/diverging/qualitative/divergingx)

前言

ggplot图形绘制中经常用到颜色映射aes,常见的有aes(color=var)或者aes(fill=var)进行边框或者填充色的绘制。比如:

library(tidyverse)iris %>% ggplot()+geom_point(aes(Sepal.Length,Sepal.Width,color=Species),size=3)

上图用到了color边框线的映射,有时候也会用到fill填充色映射,比如:

p=iris %>% ggplot(aes(x=Species,y=Sepal.Length))+geom_boxplot(aes(fill=Species))
p

但是此处的颜色类型均为系统默认,没有自定义形式,而ggplot图形系统中,则可以利用scale_fill_xxx形式对颜色梯度进行自定义。下文中colorfill实际是一致的。

离散变量

默认定义scale_fill_discrete()

如果希望改变次序,则要调用scale_x_discrete中的limits参数。

# 柱子数量不变,排序不变,legend不变
p+scale_x_discrete(breaks=c("virginica","setosa"))

# 柱子数量改变,排序改变,legend改变
p+scale_x_discrete(limits=c("virginica","setosa"))
## Warning: Removed 50 rows containing missing values (stat_boxplot).

#图形不变,legend处排序变化,颜色不变
p+scale_fill_discrete(breaks=c("virginica","setosa"))

#图形不变,legend处排序变化,颜色发生变化
p+scale_fill_discrete(limits=c("virginica","setosa"))

色环系统 scale_fill_hue()

默认情况下,离散比例的颜色围绕HSL色环均匀分布。例如,如果有两种颜色,那么它们将从圆圈上的相对点中选择;如果有三种颜色,它们在色环上将相隔 120° 等等。

默认颜色选择使用 scale_fill_hue() 和 scale_colour_hue(),hue颜色系统有修改:

  • h 色相,实际是色环角度0-360
  • c 饱和度,0-100
  • l 亮度,0-100
    例如:
p+scale_fill_hue(h=c(120,360))

p+scale_fill_hue(l=80)#设置亮度(l默认45)

p+scale_fill_hue(l=30)#设置亮度(l默认45)

p+scale_fill_hue(c=50)#设置饱和度(c默认100)

p+scale_fill_hue(c=100)#设置饱和度(c默认100)

灰度系统scale_fill_grey()

p+scale_fill_grey(start=0.2,end=0.8)

调色板scale_fill_brewer()

RColorBrewer包中有多个色板可供选择:

RColorBrewer::display.brewer.all()

RColorBrewer中有3套色板,type参数,分别为:

  • Sequential(seq): 用于表示数值梯度,用于呈现有序的数值信息,数值越高颜色越深,越低颜色越浅。
  • qualitative(qual):用于呈现分类信息,颜色之间一般对比鲜明。
  • diverging(div): 分歧,用于呈现有序/连续的数值信息,这些数值围绕着一个中心值,比中心值越大的方向用一种渐变色,比中心值越小用另一种渐变色。

对于离散变量映射,则有:

p+scale_fill_brewer(type="seq",palette = 2)

p+scale_fill_brewer(type="qual",palette = 2)

p+scale_fill_brewer(type="div",palette = 2)

或者直接指定色板名称palette=??

p+scale_fill_brewer(palette="Spectral")

上述颜色也可以在colorspace包中获取。

library(colorspace)
## Warning: package 'colorspace' was built under R version 4.1.1
hcl_palettes(plot = TRUE)

hcl_palettes("qualitative", plot = TRUE)

hcl_palettes("sequential (single-hue)", n = 7, plot = TRUE)

hcl_palettes("sequential (multi-hue)", n = 7, plot = TRUE)

hcl_palettes("diverging", n = 7, plot = TRUE)

divergingx_palettes(plot = TRUE)

如果需要具体颜色值,则通过:

#colorspace::diverging_hcl(n = 7, "Dark 2")
#colorspace::qualitative_hcl(4, palette = "myset")
colorspace::sequential_hcl(n = 7, palette = "Peach")
## [1] "#EA4C3B" "#EF6D48" "#F3885B" "#F6A173" "#F8B78E" "#F9CCA9" "#FADDC3"

ggplot2图形系统,则可以直接调用colorspace中的色板:

  • scale_color_discrete_qualitative()
  • scale_fill_continuous_sequential()
  • scale_colour_continous_divergingx()
    例如:
p+scale_fill_discrete_qualitative(palette="Set2",nmax=6,rev=T,order=4:6)

连续变量

p1=iris %>% ggplot(aes(x=Sepal.Length,y=Sepal.Width))+geom_point(aes(color=Sepal.Length),size=3)
p1

默认scale_fill_continous

p1+scale_color_continuous(type="gradient")

p1+scale_color_continuous(type="viridis")

p1+scale_color_continuous(breaks=c(2.5,5.2,6.8),limits=c(1,7))

上图中limits规定了映射范围,breaks参数规定了断点值。

梯度scale_fill_gradient

  • scale_fill_gradient
  • scale_fill_gradient2
  • scale_fill_gradientn
p1+scale_color_gradient(low="red",high="blue")

p1+scale_color_gradient2(low="red",mid="white",high="blue",midpoint = 6)

p1+scale_color_gradientn(colors=c("yellow","green","red","black"))

色板scale_fill_distiller/fermenter

  • scale_fill_distiller() 色块连续过度
  • scale_fill_steps/scale_fill_binned()/scale_fill_fermenter() 色块离散过度

其中distiller把brewer离散色板中均匀插值7个色块形成过渡色,而fermenter则是把brewer色板的颜色离散化。

p1+scale_color_distiller(palette = "Spectral")

p1+scale_color_fermenter(palette = "Spectral")

p1+scale_color_steps(low="red",high="blue")

p1+scale_color_binned()

steps还有:

p1+scale_fill_steps(low = "#002B43", high = "#99B1F7")

p1+scale_fill_steps2(low = "red", mid = "white",high = "blue")

p1+scale_fill_stepsn(colors=c(ggsci::pal_aaas()(5)))

对应colorspace包,则有scale_fill_continous_???:

  • scale_colour_continuous_sequential
  • scale_colour_continuous_qualitative
  • scale_colour_continuous_diverging
  • scale_colour_continuous_divergingx
p1+scale_color_continuous_diverging(palette = "Cork")

p1+scale_color_continuous_divergingx(palette = "Geyser")

p1+scale_color_continuous_qualitative(palette = "Warm")

p1+scale_color_continuous_sequential(palette = "Heat")

p1+scale_color_binned_qualitative(palette = "Warm")

其它

色盲色板

p1+scale_color_viridis_c()

p+scale_fill_viridis_d()

p1+scale_color_viridis_b()

完全自定义

自定义主要对应离散映射:

aa=unique(iris$Species)
p+scale_fill_manual(breaks = c(aa[2],aa[1],aa[3]), values = c("darkorange", "purple", "cyan4"))

ggplot2绘图颜色相关推荐

  1. ggsci | ggplot2的颜色标度拓展包(1):科研配色风格

    ggsci是一个知名的ggplot2拓展包,工具包名称中的sci是science的缩写.它的开发者是两个中国人:Nan Xiao <https://nanx.me>.Miaozhu Li ...

  2. R语言(ggplot2绘图)

    原文链接:https://wklchris.github.io/R-ggplot2.html ggplot2 的语法与 R 原生的语法并不统一,但是熟悉起来也并不复杂.它主要通过"+&quo ...

  3. JAVA学习绘图颜色及其笔画属性设置字体显示文字

    package com.graphics;import java.awt.*; import java.awt.geom.Rectangle2D; import java.util.Date;impo ...

  4. jupyter notebook / jupyter lab 深色主题下如何设置字体 及 如何设置绘图颜色

    在安装了jupyter notebook / jupyter lab及其深色主题之后,需要进一步设置字体,和设置绘图的颜色.否则看起来界面会比较奇怪. 本文针对这几个问题作一些说明. 文章目录 1. ...

  5. R语言绘图——实用篇 ggplot2绘图

    文章目录 R语言绘图--实用篇 ggplot2绘图 绘制等值线图相关 如何绘制等值线图 插值,平滑插值 插值,缺失值插值 色条(色阶)划分 图例的色条(色阶)修改,合理的参数值选用 图例的色条(色阶) ...

  6. Matlab:指定绘图颜色

    Matlab:指定绘图颜色 颜色值的类型 颜色名称或短名称 RGB 三元组 十六进制颜色代码 指定条形图的颜色 指定散点图中的标记颜色 MATLAB® 使用一组默认颜色创建绘图.使用默认颜色创建的不同 ...

  7. matplotlib 绘图颜色自动选择

    matplotlib 绘图颜色自动选择 用plt绘图的时候,我们经常需要选择不同的颜色.然而我们熟悉的颜色大多是红.黑.绿这样朴实无华的颜色,有些场合不那么合适. import matplotlib. ...

  8. ggplot2绘图:如果做出来的图颜色区分度不明显,如何对数据进行转换?

    今天分享的学习笔记:异常绘图数据转换方法(对数法,评分法,踢值法,颜色法),用于对热图进行修饰. ggplot2中绘制热图时,有时候会遇到数据的组间差异太大,导致可视化结果不明显(颜色区分度较低),因 ...

  9. ggplot2绘图如何根据一个变量即区分颜色又区分深浅?

    群里有这么一个问题: 请问用ggplot2绘制气泡图的时候,根据数字的正负设置红蓝两种颜色,根据数字的大小可以设置颜色的深浅吗?如何实现?可以用哪个函数,谢谢大家 先构造一个正弦曲线数据集,数值有正有 ...

最新文章

  1. vc++ 6.0对话框上无法显示中文(乱码)
  2. Python操作ElasticSearch
  3. 诗与远方:无题(七十三)
  4. Mongodb 3.0 创建用户
  5. mysql手册02_事务
  6. 将DLL注册成COM组件
  7. 最短路算法c++(dijsktra,floyd,spfa)
  8. html基本标记练习钱塘湖春行,《钱塘湖春行》练习题
  9. [luogu3505][bzoj2088][POI2010]TEL-Teleportation【分层图】
  10. 如何占用计算机大量内存,windows7内存占用率高如何处理_win7电脑内存占用过高怎么办...
  11. 坐车看书的人都是在装逼?
  12. 华为运营商级路由器配置示例 | 配置LDP方式VPLS示例
  13. 计算机桌面下面那一栏如何调节,电脑底部的任务栏不见了,你可以尝试这样做,轻松恢复它...
  14. LeetCode 1310 子数组异或查询
  15. 安卓应用加固壳判断java厂商_Android APK加固(加壳)工具
  16. php检测txt中重复数据,Python实现检测文件的MD5值来查找重复文件案例
  17. Unity API常用方法和类学习笔记1
  18. APIO2015巴厘岛的雕塑——数位DP
  19. java基础学习之JSP动态web开发技术
  20. P5831 [USACO19DEC]Cow Gymnastics奶牛体操

热门文章

  1. 系统集成项目管理工程师—案例分析重点记忆内容
  2. 告诉你一个神职业,时薪可高达三四千元
  3. WD MyCloud Gen2 折腾笔记
  4. MQTT mosquitto
  5. 【2019 ITIP】Spatial-Temporal Attention-Aware Learning for Video-Based Person Re-Identification
  6. 如何判断对方列表里是不是好友_微信怎么判断是不是被删除好友了?除了群发还能这样做,望周知!...
  7. Normalization 批标准化(batch normalization)理解
  8. 适合陪孩子一起看的电影
  9. 点阵字库的生产原理(转)
  10. 【文献阅读】Accurate Large Minibatch SGD Training ImageNet in 1 hour