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

浏览: 1953

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

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

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

###

今天给大家介绍一个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))

image.png

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

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

scale_fill_gradient2(low="yellow",mid="orange",high="red",midpoint=.02)

image.png

但是当你使用以上所提到的函数进行标度的设置之后,你无须进行颜色的制定了,可以直接通过封装的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()

image.png

image.png

image.png

非常推荐大家使用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()

image.png

image.png

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

scale_fill_distiller(palette="Set1")+

theme_void()

image.png

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

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

image.png

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


http://colorbrewer2.org/#

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

R语言颜色综合运用与色彩方案共享

一个神奇的配色网站~

本文小节:

---------

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

推荐 1
本文由 杜雨 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

谢谢分享!

要回复文章请先登录注册