R语言数据可视化——图形色彩设计

图形颜色的选择对我们最终图形呈现的效果影响很大,我们需要用到的图形配色也跟随着图形出现的场合而变化,这篇文章整理了前辈们制作的在ggplot包绘制图形时,常常使用的配色包,供大家在不同场合下选择合适的配色。

主题颜色代码包

在这里,主要介绍4个常用的调色包:RColorBrewer、ggthmr、ggsci、ggthemes,这些包有一些已经生成好的色条或者主题供我们选择使用。

首先,加载好我们需要用到的R包和数据 :

library(RColorBrewer)
library(scales)
library(readxl)
library(ggplot2)
library(ggthemes)
library(ggsci)
library(ggtech)
library(dplyr)
library(viridis)
library(jtools)
library(wesanderson)
library(gridExtra)
setwd("/Users/apple/Desktop/ggplot 可视化")
movie=read.csv("清洗后数据.csv")
happy=read.csv("2019.csv")
college=read.csv("college.csv")
a<-filter(movie,release_date == 'SummerVacation')
df1 <- as.data.frame(table(a$content_rating))
b<-filter(movie,release_date == 'Christmas')
df2 <- as.data.frame(table(b$content_rating))
c<-filter(movie,release_date == 'Easter')
df3 <- as.data.frame(table(c$content_rating))
d<-filter(movie,release_date == 'Other')
df4 <- as.data.frame(table(d$content_rating))
DF<-rbind(df1,df2,df3,df4)
DF$release_date<-c('SummerVacation','SummerVacation','SummerVacation','SummerVacation','SummerVacation','Christmas','Christmas','Christmas','Christmas','Christmas','Easter','Easter','Easter','Easter','Easter','Other','Other','Other','Other','Other')

常用的配色包

RColorBrewer

RColorBrewer是较为常用的调整颜色的R包

色块展示

(1)连续型Sequential,生成渐变颜色的色条,可以在热图等图形中使用。
(2)极端型Diverging,生成深色强调两端、浅色表示中部的颜色,可用来标注数据中的离群点。
(3)离散型Qualitative,生成彼此差异明显的颜色,通常用来标记分类数据。

display.brewer.all(type = "all")

截取色条色块

display.brewer.pal(3, "Set1")

图形绘制

stacked=ggplot(movie,aes(imdb_score,fill=release_date))+geom_histogram(position = "stack",binwidth =.5,alpha=.9,color="black")+theme_minimal()+labs(title = "Stacked Histogram")
pie=ggplot(DF, aes(x="", y=Freq, group=Var1, color=Var1, fill=Var1)) +geom_bar(stat="identity",width=1,position = position_fill()) + coord_polar("y", start=0)+ facet_wrap(~ release_date)+     ##通过release_date分面展示labs(x = "", y = "", title ="Movie content rating") + theme_minimal()+ theme(axis.ticks = element_blank())+theme(legend.title = element_blank())+ theme(legend.position = "top")+theme(axis.text.x = element_blank())point=ggplot(iris,aes(Sepal.Length,Sepal.Width),Species)+geom_point(aes(color = Species)) +theme_minimal()+theme(legend.position = "right")+ggtitle("point plot")
box=ggplot(diamonds,aes(cut,price,fill=color))+geom_boxplot()+ggtitle("Box Plot")+theme_minimal()+guides(fill=guide_legend(title=NULL)) box_brew=box+scale_fill_manual(values =colorRampPalette(brewer.pal(9,"Set1"))(7))
point_brew=point+scale_color_manual(values =colorRampPalette(brewer.pal(9,"Set1"))(5))
pie_brew=pie+scale_color_manual(values =colorRampPalette(brewer.pal(9,"Set1"))(5))
stacked_brew=stacked+scale_fill_manual(values =colorRampPalette(brewer.pal(11,"Paired"))(4))grid.arrange(box_brew,stacked_brew,point_brew,pie_brew,ncol=2)


这里颜色代表的都是分类数据,故选择的离散型色条代表其不同颜色的分类。

viridis

viridis包能够生成一系列连续型色条,比较适用于绘制热图等图形的颜色填充。


k <- ggplot(college, aes(tuition,faculty_salary_avg))
hexplot <- k + geom_hex()+facet_grid("control")+        #分面scale_fill_viridis()+         #颜色设定          labs(title="Hex histogram")+theme_bw()+theme(plot.title = element_text(hjust = 0.5))m=ggplot(heatmap, aes(x = X2, y = X1, fill = value)) +geom_tile() + scale_fill_viridis() + scale_x_discrete(expand = c(0, 0)) +scale_y_discrete(expand = c(0, 0)) + coord_equal()+  labs(title="Heat plot")grid.arrange(hexplot,m,ncol=2)


通过颜色的深浅,来表示数值的大小和密度分布。

wesanderson

这个包中包含16种色条颜色,他们都是从Wes Anderson的电影里面选取的颜色。

names(wes_palettes)
wes_palette("FantasticFox1")       #查看色板
wes_palette("Cavalcanti1",3)

#离散型stacked_wes=stacked+scale_fill_manual(values=wes_palette(n=4, name="Zissou1"))#连续型
pal <- wes_palette("Zissou1", 100, type = "continuous")
heat=ggplot(heatmap, aes(x = X2, y = X1, fill = value)) +geom_tile() + scale_fill_gradientn(colours = pal) + scale_x_discrete(expand = c(0, 0)) +scale_y_discrete(expand = c(0, 0)) +  labs(title = "Heat map")+coord_equal()grid.arrange(stacked_wes,heat,ncol=2)


wesanderson包可以生成连续型颜色也可以生成离散型颜色,只需改变wes_palette()函数中的type参数便可,type = c(“discrete”, “continuous”)。

学术型配色

ggsci包

Name Scales Palette Types Palette Generator
NPG scale_color_npg() scale_fill_npg() “nrc” pal_npg()
AAAS scale_color_aaas() scale_fill_aaas() “default” pal_aaas()
NEJM scale_color_nejm() scale_fill_nejm() “default” pal_nejm()
Lancet scale_color_lancet() scale_fill_lancet() “lanonc” pal_lancet()
JAMA scale_color_jama() scale_fill_jama() “default” pal_jama()
JCO scale_color_jco() scale_fill_jco() “default” pal_jco()
UCSCGB scale_color_ucscgb() scale_fill_ucscgb() “default” pal_ucscgb()
D3 scale_color_d3() scale_fill_d3() “category10” “category20” “category20b” “category20c” pal_d3()
LocusZoom scale_color_locuszoom() scale_fill_locuszoom() “default” pal_locuszoom()
IGV scale_color_igv() scale_fill_igv() “default”“alternating” pal_igv()
UChicago scale_color_uchicago() scale_fill_uchicago() “default”“light”“dark” pal_uchicago()
Star Trek scale_color_startrek() scale_fill_startrek() “uniform” pal_startrek()
Tron Legacy scale_color_tron() scale_fill_tron() “legacy” pal_tron()
Futurama scale_color_futurama() scale_fill_futurama() “planetexpress” pal_futurama()
Rick and Morty scale_color_rickandmorty() scale_fill_rickandmorty() “schwifty” pal_rickandmorty()
The Simpsons scale_color_simpsons() scale_fill_simpsons() “springfield” pal_simpsons()
GSEA scale_color_gsea() scale_fill_gsea() “default” pal_gsea()
Material Design scale_color_material() scale_fill_material() “red” “pink”“purple” “deep-purple”“indigo” “blue”“light-blue” “cyan”“teal” “green”“light-green” “lime”“yellow” “amber”“orange” “deep-orange”“brown” “grey”“blue-grey” pal_material()

ggsci包使用的函数为scale_color_xxx()/scale_fill_xxx(),下面以NEJM杂志和Lancet杂志为例,展示其绘制的图形颜色。

NEJM杂志配色

box_nejm=box+scale_fill_nejm()
point_nejm=point+ scale_color_nejm()
pie_nejm=pie+ scale_fill_nejm()
stacked_nejm=stacked+ scale_fill_nejm()grid.arrange(box_nejm,stacked_nejm,point_nejm,pie_nejm,ncol=2)

Lancet杂志配色

box_nejm=box+scale_fill_lancet()
point_nejm=point+ scale_color_lancet()
pie_nejm=pie+ scale_fill_lancet()
stacked_nejm=stacked+ scale_fill_lancet()grid.arrange(box_nejm,stacked_nejm,point_nejm,pie_nejm,ncol=2)

杂志配色

ggthemes包

ggthemes包使用函数与ggsci相似,使用scale_fill_xxx(),scale_color_xxx(),theme_xxx()填充颜色,与ggsci包相比,ggthemes可以对其背景主题进行设置。在这里以经济学人和华尔街日报为例,展示其配色。

经济学人配色

box_economist=box+scale_fill_economist()
point_economist=point+ scale_color_economist()
pie_economist=pie+scale_fill_economist()
stacked_economist=stacked+ scale_fill_economist()grid.arrange(box_economist,stacked_economist,point_economist,pie_economist,ncol=2)

经济学人配色采用的是蓝色渐变风。

华尔街日报配色


box_wsj=box+scale_fill_wsj()+ggthemes::theme_wsj(base_size = 8)
point_wsj=point+ scale_color_wsj()+ggthemes::theme_wsj(base_size = 8)
pie_wsj=pie+ scale_fill_wsj()+ggthemes::theme_wsj(base_size = 8)
stacked_wsj=stacked+ scale_fill_wsj()+ggthemes::theme_wsj(base_size = 8)grid.arrange(box_wsj,stacked_wsj,point_wsj,pie_wsj,ncol=1)

ggthemes包中的主题例如华尔街日报等风格鲜明,但适用范围较为局限。

ggthemr包

ggthemr包是在ggplot2基础上的一个拓展包,可以在全局上更改图形的主题,不需要更改已有的图形代码。
目前可供选择的palette有:flat/flatdark/camoflauge/chalk/copper/dust/earth/fresh/grape/grass/greyscale/light/lilac/pale/sea/sky/solarized。各个模式绘图效果详见:https://github.com/cttobin/ggthemr#installation

library(ggthemr)
ggthemr_reset()
ggthemr('pale',layout = 'scientific',           #网格线、轴线等布局spacing = 1,                     #图形中的留白值type = 'inner')                  #应用于画图区域grid.arrange(box,stacked,point,pie,ncol=2)

ggThemeAssist包——交互化图形参数调整

ggThemeAssist包可以交互式调整图形各个参数并自动生成代码。在使用该包时,需要先加载shiny包。运行完图形后,选择addins中的ggplot Theme Assist便可以交互式调整图形各个参数,并自动生成代码。

library("shiny")
library("ggThemeAssist")
k=ggplot(diamonds,aes(cut,price,fill=color))+geom_boxplot()

总体而言,简洁的背景配上合适的颜色较为美观,反而那些花里胡哨的theme设置适用范围会较局限。

在线配色工具

color brewer

color brewer (https://colorbrewer2.org/#type=sequential&scheme=BuGn&n=3)
是一个强大的配色工具,同时本身也是一个绘图系统,拥有很多配色模板,RColorBrewer包中的色条便是从该配色工具中取出,可配合其他可视化工具使用。

Data Color Picker

https://learnui.design/tools/data-color-picker.html
用于生成两种颜色的渐变,可以自由选择需要多少种颜色过渡。

Viz Palette

https://projects.susielu.com/viz-palette
对不能很好分辨颜色的朋友而言,这是款非常友好的调色工具。

色盲模拟器

https://www.color-blindness.com/coblis-color-blindness-simulator/

Chroma.js Color Palette Helper

https://vis4.net/palettes/#/9|s|00429d,96ffea,ffffe0|ffffe0,ff005e,93003a|1|1
可以制作顺序调色板或者发散调色板,根据不同需要调整调色板的渐变过程。

NIPPON COLORS

https://nipponcolors.com/#kokiake
在这个网站中提供了很多好看的单色

参考文献:How to Choose Colors for Your Data Visualizations

R语言数据可视化——图形色彩设计(调色盘)相关推荐

  1. R语言数据可视化 ggplot2基础1 ggplot2 图形的分层语法 Layered Grammar 简介

    R语言数据可视化 ggplot2基础1 ggplot2 图形的分层语法 Layered Grammar 简介 分层语法的组成(data-stat-geom-scale-coord-facet) 用分层 ...

  2. 推荐:一本“高颜值”的R语言数据可视化图书(包邮送3本)

    文章留言点赞前3名的朋友,每人送1本<R语言数据化可视化之美增强版>,名单揭晓日期为:本周日 (2020年7月12日晚7点).到时,获奖的朋友可以直接添加微信:meta-genomics, ...

  3. 半折预售:新书-R语言数据可视化之美|ggplot2作者推荐

    我本来想等正式发售的时候,再告诉大家我的新书<R语言数据可视化之美>已经出版,奈何新书还太贵,这几天刚好京东有买100减50的活动,所以想想还是赶紧告诉大家吧,不然平时购买的话,太真有点小 ...

  4. R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet

    R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet 单图层散点图 单图层散点图的facet 单图层散点图 这一讲我们从最简单的散点图开始介绍ggplot2应用的基础,首先我们下 ...

  5. r语言liftchart_最棒的7种R语言数据可视化

    随着数据量不断增加,抛开可视化技术讲故事是不可能的.数据可视化是一门将数字转化为有用知识的艺术. R语言编程提供一套建立可视化和展现数据的内置函数和库,让你学习这门艺术.在可视化的技术实现之前,让我们 ...

  6. r 语言ylim = c(0 1),小白R语言数据可视化进阶练习一

    原标题:小白R语言数据可视化进阶练习一 作者:路遥马亡R语言中文社区专栏作者 知乎ID: https://zhuanlan.zhihu.com/c_135409797 00 布局参数 先介绍一个布局参 ...

  7. R语言数据可视化 ggplot2基础4 位置与坐标系

    R语言数据可视化 ggplot2基础4 位置与坐标系 我们继续使用ggplot2::diamonds介绍position. position = "identity" ggplot ...

  8. R语言数据可视化 ggplot2基础3 添加几何对象

    R语言数据可视化 ggplot2基础3 添加几何对象 数据的统计变换 添加几何对象 数据的统计变换 添加几何对象 上一讲我们介绍的是如何创建散点图,这一讲我们介绍如何创建其他类型的图,以及怎么创建有多 ...

  9. R语言数据可视化中颜色设置

    R语言数据可视化中颜色设置 最近在学统计学,使用的是R语言,为了更好的掌握这门语言,就把学到的零碎知识记录下来. 下面全是R语言的颜色的内容: 一.颜色的种类: 一共有颜色种类657种 colors( ...

最新文章

  1. 安装linux系统选择重新分区会怎么样,弱弱的问一下 双系统安装中linux如何分区?分区太多会不会不好?...
  2. 深入解读:获Forrester大数据能力高评价的阿里云DataWorks思路与能力
  3. 矩阵论思维导图_全新思维导图
  4. 昆仑万维14亿收购音频社交平台Star Group 60%股权 周亚辉获益超10亿元
  5. swing获取文本框内容_Swing 使用 JTable详解
  6. 洛谷——P2524 Uim的情人节礼物·其之弐
  7. Java基础———第一弹
  8. 基本计算机编程术语,计算机编程术语,你记住了吗?
  9. 红米ac2100路由器刷入openwrt教程
  10. linux的目录以及作用
  11. linux cp omitting 复制,Linux中复制目录报错cp:omitting directory的解决办法
  12. JAVA数字大写金额转换
  13. Word 排版:插入题注和引用题注
  14. Quantopian单因子分析工具:Alphalens
  15. 树莓派——摄像头配置与操作
  16. 通信基础:星座图与IQ调制
  17. 流媒体服务器FFMPEG转码流摄像头取流
  18. java 多线程 售票_Java 多线程 之 火车站售票实例
  19. Color Space: Ycc
  20. 聊聊高考分数线和选择

热门文章

  1. 直播源码搭建教程之直播流媒体
  2. 【猿人学WEB题目专解】猿人学第4题
  3. 《道德经》(王弼本)
  4. 为什么选择微软Dynamics 365作为企业客户关系管理系统
  5. Vue引入iconfont失败 文件查找失败:‘./iconfont.eot?t=1606800914535
  6. android 短信接口收拦截,给手机装“来点黑名单” 拒绝垃圾短信和电话
  7. ​从双非到985:少年何妨梦摘星?敢挽桑弓射玉衡。
  8. dsp点亮led程序_点亮它:使用新的Windows 7功能的应用程序列表
  9. 分布式系列之分布式计算框架Flink深度解析
  10. 第二篇:MySQL之InnoDB物理存储结构