R语言数据可视化——图形色彩设计(调色盘)
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语言数据可视化——图形色彩设计(调色盘)相关推荐
- R语言数据可视化 ggplot2基础1 ggplot2 图形的分层语法 Layered Grammar 简介
R语言数据可视化 ggplot2基础1 ggplot2 图形的分层语法 Layered Grammar 简介 分层语法的组成(data-stat-geom-scale-coord-facet) 用分层 ...
- 推荐:一本“高颜值”的R语言数据可视化图书(包邮送3本)
文章留言点赞前3名的朋友,每人送1本<R语言数据化可视化之美增强版>,名单揭晓日期为:本周日 (2020年7月12日晚7点).到时,获奖的朋友可以直接添加微信:meta-genomics, ...
- 半折预售:新书-R语言数据可视化之美|ggplot2作者推荐
我本来想等正式发售的时候,再告诉大家我的新书<R语言数据可视化之美>已经出版,奈何新书还太贵,这几天刚好京东有买100减50的活动,所以想想还是赶紧告诉大家吧,不然平时购买的话,太真有点小 ...
- R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet
R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet 单图层散点图 单图层散点图的facet 单图层散点图 这一讲我们从最简单的散点图开始介绍ggplot2应用的基础,首先我们下 ...
- r语言liftchart_最棒的7种R语言数据可视化
随着数据量不断增加,抛开可视化技术讲故事是不可能的.数据可视化是一门将数字转化为有用知识的艺术. R语言编程提供一套建立可视化和展现数据的内置函数和库,让你学习这门艺术.在可视化的技术实现之前,让我们 ...
- r 语言ylim = c(0 1),小白R语言数据可视化进阶练习一
原标题:小白R语言数据可视化进阶练习一 作者:路遥马亡R语言中文社区专栏作者 知乎ID: https://zhuanlan.zhihu.com/c_135409797 00 布局参数 先介绍一个布局参 ...
- R语言数据可视化 ggplot2基础4 位置与坐标系
R语言数据可视化 ggplot2基础4 位置与坐标系 我们继续使用ggplot2::diamonds介绍position. position = "identity" ggplot ...
- R语言数据可视化 ggplot2基础3 添加几何对象
R语言数据可视化 ggplot2基础3 添加几何对象 数据的统计变换 添加几何对象 数据的统计变换 添加几何对象 上一讲我们介绍的是如何创建散点图,这一讲我们介绍如何创建其他类型的图,以及怎么创建有多 ...
- R语言数据可视化中颜色设置
R语言数据可视化中颜色设置 最近在学统计学,使用的是R语言,为了更好的掌握这门语言,就把学到的零碎知识记录下来. 下面全是R语言的颜色的内容: 一.颜色的种类: 一共有颜色种类657种 colors( ...
最新文章
- 安装linux系统选择重新分区会怎么样,弱弱的问一下 双系统安装中linux如何分区?分区太多会不会不好?...
- 深入解读:获Forrester大数据能力高评价的阿里云DataWorks思路与能力
- 矩阵论思维导图_全新思维导图
- 昆仑万维14亿收购音频社交平台Star Group 60%股权 周亚辉获益超10亿元
- swing获取文本框内容_Swing 使用 JTable详解
- 洛谷——P2524 Uim的情人节礼物·其之弐
- Java基础———第一弹
- 基本计算机编程术语,计算机编程术语,你记住了吗?
- 红米ac2100路由器刷入openwrt教程
- linux的目录以及作用
- linux cp omitting 复制,Linux中复制目录报错cp:omitting directory的解决办法
- JAVA数字大写金额转换
- Word 排版:插入题注和引用题注
- Quantopian单因子分析工具:Alphalens
- 树莓派——摄像头配置与操作
- 通信基础:星座图与IQ调制
- 流媒体服务器FFMPEG转码流摄像头取流
- java 多线程 售票_Java 多线程 之 火车站售票实例
- Color Space: Ycc
- 聊聊高考分数线和选择
热门文章
- 直播源码搭建教程之直播流媒体
- 【猿人学WEB题目专解】猿人学第4题
- 《道德经》(王弼本)
- 为什么选择微软Dynamics 365作为企业客户关系管理系统
- Vue引入iconfont失败 文件查找失败:‘./iconfont.eot?t=1606800914535
- android 短信接口收拦截,给手机装“来点黑名单” 拒绝垃圾短信和电话
- ​从双非到985:少年何妨梦摘星?敢挽桑弓射玉衡。
- dsp点亮led程序_点亮它:使用新的Windows 7功能的应用程序列表
- 分布式系列之分布式计算框架Flink深度解析
- 第二篇:MySQL之InnoDB物理存储结构