离散颜色标度连续化的最佳方案

数了一下刚好有一周多没有写新文章了,主要是临近毕业琐事比较多,再也没有像之前那样,拥有大把时间可以用来挥霍和消遣,静下心来写代码了。

毕竟要写一篇技术含量很高而又能让大家感兴趣的文章出来,足够的时间保障和没有任何干扰的的心情,一个都不能少。

真的不知道还能坚持写几篇,或者说接下来的时间还能容许我抽出多少来打理这些,希望以前写过的那些对于大家还有价值。

今天给大家介绍一个ggplot2连续颜色映射函数中一组非常好用的预设函数,它可以很容易的帮我们实现特定离散颜色间的均匀连续化。

说的不那么专业一点儿,就是如果遇到有连续型变量要使用颜色来表达,那么通常我们需要自己指定低值、中间值或者高值所代表的颜色,但是以下我介绍的函数则可以直接将RcolorBrewer的标准离散颜色色板通过均匀差值的方式实现连续化。

  • scale_colour_distiller(type = "seq",palette=1,direction= -1,na.value = "grey50",guide = "colourbar")
  • scale_fill_distiller(type = "seq",palette = 1,direction =-1, na.value = "grey50",guide = "colourbar")

以上参数中,type即是指定色盘类别,仍然是三大类别,palette指定色盘代号或者名称,direction指定方向,na.value指定缺失值颜色,guide指定最终图例的样式。

以上两个配对函数即是我今天要讲解的主要内容,这两个函数是用于线条颜色(含字体)、填充颜色的的标度函数,其将RcolorBrewer色盘中的所有离散颜色组合通过均匀差值连续化,给我们在提供连续性变量的颜搭配了提供了很大的便利,因为RcolorBrewer色盘本身就是专为图形序列配色量身定制的,尽管其开发之初的主要意图是为满足离散序列的科学化颜色搭配,但是将其用于连续化场景也是很棒哒。

library(ggplot2) ggplot(faithfuld) +geom_tile(aes(waiting,eruptions,fill=density))

当你使用一个默认的连续性映射时,ggplot2会给你的图表设定一个默认的连续性颜色渐变。如果要自定义,你可能要写成这样:

ggplot(faithfuld) +geom_tile(aes(waiting,eruptions,fill=density))+ scale_fill_gradient2(low="yellow",mid="orange",high="red",midpoint=.02)

但是当你使用以上所提到的函数进行标度的设置之后,你无须进行颜色的制定了,可以直接通过封装的RcolorBrewer标度函数,设置色盘即可完成离散色盘色连续化。

ggplot(faithfuld) +geom_tile(aes(waiting,eruptions,fill=density))+ scale_fill_distiller(palette="Blues",direction =1)+ theme_void() ggplot(faithfuld) +geom_tile(aes(waiting,eruptions,fill=density))+ scale_fill_distiller(palette="Greens",direction =1)+ theme_void() ggplot(faithfuld) +geom_tile(aes(waiting,eruptions,fill=density))+ scale_fill_distiller(palette="Reds",direction =1)+ theme_void()

非常推荐大家使用RcolorBrewer中的seq色板中的颜色组合来搭配连续性变量的颜色标度映射,因为这种颜色组合本身就出自同一个色系,用于连续性标度的表达堪称完美。

当然双向渐变的离散颜色组合或者多分类色组也是支持这种方式进行连续化的。当然如果是带有负值的变量,使用这种双向渐变进行连续化映射绝对是恰到好处。

ggplot(faithfuld) +geom_tile(aes(waiting,eruptions,fill=density))+ scale_fill_distiller(palette="RdYlBu")+ theme_void() ggplot(faithfuld) +geom_tile(aes(waiting,eruptions,fill=density))+ scale_fill_distiller(palette="RdYlGn")+ theme_void()

ggplot(faithfuld) +geom_tile(aes(waiting,eruptions,fill=density))+ scale_fill_distiller(palette="Set1")+ theme_void()

但是多分类颜色连续化以后看着就多少有些怪怪的。

RcolorBrewer包中所有离散色组颜色名称列表:

以下是RcolorBrewer官方网站的地址,网站上 提供整个配色库中所有颜色组合的Excel宏文件下载渠道,可以作为日常报表配色、图形配色甚至PPT配色的很好参考依据,每一个职场人都应该了解一下~

http://colorbrewer2.org/#

关于RcolorBrewer的内容,请看这几篇旧文:

R语言颜色综合运用与色彩方案共享:http://suo.im/4NNQf8

一个神奇的配色网站~

本文小结:

连续性的配色方案着实不好搭配,本小节跟大家介绍的这两个源自于RcolorBrewer的颜色标度调整函数,可以将该包中所预设的所有离散色组全部通过均匀差值的方式连续化,提供给连续性标度配色使用,给我们提供了更为高效的颜色标度调整方案。

原文发布于微信公众号 - 数据小魔方(datamofang)

原文发表时间:2017-08-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据科学与人工智能

【机器学习】Python语言下的机器学习库

Python是最好的编程语言之一,在科学计算中用途广泛:计算机视觉、人工智能、数学、天文等。它同样适用于机器学习也是意料之中的事。 当然,它也有些缺点;其中一个...

25610
来自专栏阿凯的Excel

统计函数与通配符相爱,不是意外!

首插入音乐,功放党请慎点。 海鸟跟鱼相爱,只是一场意外! 但是统计函数和通配符相爱,却是一种必然! 统计函数何许人也:Sumif、Countif、Average...

3046
来自专栏每日一篇技术文章

opengL ES _ 入门_05

ID是漫反射的强度,Ii是光的入射光的强度,和KD的漫反射,是对粗糙松散耦合对象材料。松散的意思是,在许多现实世界的材料,实际表面可能有点抛光,但半透明的,而层...

1403
来自专栏ATYUN订阅号

赫尔辛基大学AI基础教程:搜索和解决问题(2.1节)

想象一下你在一个外国的城市,在某个地方(比如一家酒店),想用公共交通工具去另一个地方(比如一家不错的餐馆)。你是做什么?如果你会像许多人一样,掏出智能手机,输入...

1406
来自专栏玉树芝兰

贷还是不贷:如何用Python和机器学习帮你决策?

本文我们用贷款风险判断的实际案例,帮助你一步步学习如何用Python做决策树。依靠机器学习中的分类(classification)方法,你可以快速高效地完成繁重...

944
来自专栏专知

【最新PyTorch0.4.0教程01】PyTorch的动态计算图深入浅出

8434
来自专栏算法+

MTCNN人脸检测 附完整C++代码

Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Neura...

2.4K5
来自专栏大数据挖掘DT机器学习

Python 自然语言处理(NLP)工具库汇总

最近正在用nltk 对中文网络商品评论进行褒贬情感分类,计算评论的信息熵(entropy)、互信息(point mutual information)和困惑值(...

48212
来自专栏数说戏聊

Tableau构建消费者信心指数动态监测

902
来自专栏数据科学与人工智能

【Python环境】Python语言下的机器学习库

Python是最好的编程语言之一,在科学计算中用途广泛:计算机视觉、人工智能、数学、天文等。它同样适用于机器学习也是意料之中的事。 当然,它也有些缺点;其中一个...

2956

扫码关注云+社区