ggplot2 | 如何对连续型变量使用离散型调色板进行配色
在7月份,本号推出了一个关于R语言配色方法的系列推文,其中第III节介绍了ggplot2
工具包的配色方法——颜色标度函数
在这篇推文中,小编介绍了针对两种变量类型的三种颜色标度函数,即
离散型变量:离散型标度
连续型变量:连续型标度、分箱型标度
其中,离散型标度是把等数目的颜色依次赋值给离散变量的各个类别,连续型标度则由用户先指定颜色的极端值(和中间值),然后再由工具包通过计算来生成连续的颜色带。
分箱型标度虽然相当于将连续型变量转化为离散型变量,但其配色思想还是类似于连续型标度,即先由用户指定颜色的极端值(和中间值),再由工具包计算其余的颜色类别,以构成具有过渡特征的离散颜色带。
这种配色方法虽然方便,但缺点是用户不能够灵活地控制所生成的颜色带,尤其对缺乏色彩知识的用户来说,由于难以准确预判生产的颜色效果而很大可能会对结果不满意。
library(ggplot2)
library(patchwork)
set.seed(20211001)
df <- data.frame(x = 1:40, y = rnorm(40))
p <- ggplot(df, aes(x, y, color = y)) + geom_point(size = 2) + labs(x = NULL, y = NULL)
p1 <- p + scale_color_steps(low = "blue", high = "red")
p2 <- p + scale_color_steps(low = "blue", high = "red",breaks = c(-Inf, -1, 1, Inf))
p1 + p2
上面就是一个使用分箱型标度函数的案例,相对于左图,右图通过调用breaks
参数实现了自定义分箱的数目,但颜色选取还是比较受限制。
与之相反的是,离散型标度虽然看起来比较繁琐,但其优点恰恰是灵活,用户日常中可以积累一些好看的颜色组合,在使用时再进行手动赋值;再者,grDevices
、RColorBrewer
等工具包还提供了大量的离散调色板,用户觉得满意就可以直接调用。
可惜的是,在ggplot2
中,对连续型变量并不能调用离散型标度函数,否则会报错。如下例:
p + scale_color_brewer()
## 错误: Continuous value supplied to discrete scale
对于一些具有分类特征的变量,可以使用factor()
函数直接将其转为离散型变量(即因子变量),但这种方法并不通用。下面小编就介绍一种通用的方法,使用的函数是scale_colour_stepsn()
。
scale_colour_stepsn()
函数是分箱标度函数scale_colour_steps()
的拓展版,其可以为颜色带指定若干个临界值(极端值+中间值)。基本思路如下:
先通过
n.breaks
或breaks
参数确定分箱的数目;再通过
colors
或colours
参数指定等量的颜色临界值,在指定临界值时可以调用离散调色板。
p + scale_color_stepsn(n.breaks = 3,colors = grey.colors(4))
library(RColorBrewer)
p + scale_color_stepsn(breaks = c(-1.5, 0, 1.5),colors = brewer.pal(4, "Dark2"))
最后祝大家假期愉快!
ggplot2 | 如何对连续型变量使用离散型调色板进行配色相关推荐
- 连续型字段,离散型字段
连续型字段,离散型字段 例如:为什么年龄是连续型字段? 我们举个例子,为什么年龄是连续型而不是离散型?区分这两者的关键点在于有穷性,离散型的字段是可以列举出所有情况的,如在" ...
- Python之pandas:利用describe函数统计【类别型】特征/离散型变量的描述性统计信息(包括个数count、unique、top及其freq、first、last)之详细攻略
Python之pandas:利用describe函数统计[类别型]特征/离散型变量的描述性统计信息(包括个数count.unique.top及其freq.first.last)之详细攻略 目录 利用d ...
- plsql 中的记录型变量和引用型变量
/* plsql 中的记录型变量和引用型变量 查询某个员工的姓名和工资 练习记录型变量: 定义变量: emp_rec emp%rowtype; sql语句: select * into emp_rec ...
- C++中字符型变量与整型的算术运算
C++中字符型变量与整型的算术运算 字符型变量与整型的算术运算 C++中算术运算中的精度 下面的代码展示了上面表达式中类型的转换 数据类型的自动转换 字符型变量与整型的算术运算 最近在学习C++,经常 ...
- 分类型变量预测连续型变量_SPSS中的Variable数据变量类型介绍,一次性弄清无序分类变量、有序分类变量、 离散型数值变量、连续型数值变量的区别!...
变量的概念:变量也就是就是一种可以进行测量的数据条目(data item),对于定义变量在统计里非常重要,特别是在进行SPSS分析的时候,需要明确定义一个变量的性质.打开SPSS软件时,数据录入界面上 ...
- ‘字符型‘变量和‘字符串型‘变量
一.字符型 作用:字符型变量用于显示单个字符 语法:char ch=' a '(要用单引号,且单引号内只能用一个字符) char ch='a': cout<<ch<<en ...
- JAVA中用什么来定义布尔型变量_Java 布尔型
Java 布尔型 接下来,我们准备为大家介绍"布尔型". "布尔型"--布尔型只有真或假,它是关系表达式的运算结果,真是true,而假是false,而这种类型主 ...
- c++字符型变量和字符串型变量
#include<iostream> #include<string>//定义字符型变量要包含此头文件(c++类型) using namespace std;int main( ...
- 布尔型变量java_布尔型变量-Java计算机等级考试笔记
布尔型变量 只能是true或false两个值之一的变量就是布尔(boolean)类型变量,true和false是布尔型直接量.你可以用下面的语句定义一个名称为state的布尔型变量: boolean ...
最新文章
- 范围解析操作符 (::)
- 常用命令-临时记录!
- python中处理日期和时间的标准模块是-Python时间相关处理
- 串行总线---差分互连(差分线)之共模、奇模、偶模
- 沭阳县依托运用大数据推进平安建设
- 验证码生成java_JAVA-验证码生成
- MAVEN构建的各个环节及常用maven命令
- android 仿360浮动,Android--模仿360底部导航按钮
- AtCoder Regular Contest 059
- golang select default continue_Golang+VSCode环境配置
- 卷积神经网络CNN是靠什么线索学习到深度信息的?
- python高级含金量技巧_2020年最新Python开发的高级技巧,面试必学
- 湖北二级计算机考试时间2015年,2015上半年湖北计算机等级考试时间
- powershell cs上线_BasUSB实现后台静默执行上线CobaltStrike
- ArrayList学习[常用方法|源码]
- 在Html5中与服务器交互
- 面试题:ES和Solr的区别是什么?
- 铅蓄电池首批规范企业名单出炉 多家上市公司入围
- c语言工具栏运行不见了,电脑下面的任务栏不见了怎么办 几种方法介绍
- IOS error:Images.xcassets: error: ERROR: Each TDDistiller instance can be distilled only one time!
热门文章
- SACC2019架构师大会PPT合集
- Nginx学习总结(15)—— 提升 Web 应用性能的十个步骤
- ELK学习总结(1)——我们为什么要用ELK
- html5 nodejs桌面开发工具,html5fromImages-nodejs生成器入门
- 计算机系班级海报,系部动态 | 电子系“五彩班栏”班级海报评比
- python mysql 写入_python如何写进MYSQL
- 分布式实时日志分析解决方案 ELK 部署架构
- python 的 virtualenv 环境搭建及 sublime 手动创建运行环境
- java监听器的原理与实现
- Android彻底组件化方案实践