本篇推文来自于公众号读者的投稿
如果你在读研读博的过程中积累了一些经验,不管内容是关于数据处理、论文写作,还是实验室的家常里短,师兄师姐的爱恨情仇,都欢迎你来公众号投稿。
以下是正文内容
大家好,在这里给大家介绍一下使用ggplot2绘图调色的几种小方法。正所谓绘图十分钟,调色一小时。图片的配色直接决定了图片质量的好坏。下面讲一下我平时绘图用到的调色工具。
首先是创建一份数据集
代码语言:javascript复制data <- data.frame(
name=letters[1:9],
value=sample(seq(10,20),9))
data
使用ggplot2默认的配色做一个简单的柱形图
代码语言:javascript复制library(ggplot2)
ggplot(data=data,aes(name,value,fill=name))
geom_bar(stat = "identity")
image.png
配色小技巧之一:RColorBrewer 包
RColorBrewer 包是一个专门调色的包,包含三种类型的配色:
- 1、sequential
- 2、qualitative
- 3、diverging
(小明评论:这三个类型的配色我的理解是 1 sequential 如果你的数据是1,2,3,4,这种有大小,配色可以选择这种类型,数值比较小,颜色会比较浅,数值比较大,颜色会比较深;2 qualitative 定性的 适用于分类变量,就是数据是 A B C D这种,没有大小,只是类别不一样;3 diverging 这个暂时不理解是什么意思)
先把调色板调出来看一下
代码语言:javascript复制library(RColorBrewer)
help(package="RColorBrewer")
display.brewer.all()
image.png
1 对应的应该是sequential 2 对应的是 qualitative 3 对应的是diverging
生成颜色值我们需要使用brewer.pal()
函数,这个函数又两个参数,第一个参数是调色板左侧的名字,第二个位置是生成几个颜色
比如做柱形图,我们选择分类的颜色
代码语言:javascript复制colors<-brewer.pal(name="Set3",9)
colors
这样就生成了9个颜色,接下来用这个颜色填充柱形图
代码语言:javascript复制ggplot(data=data,aes(name,value,fill=name))
geom_bar(stat = "identity")
scale_fill_manual(values = colors)
theme_bw()
image.png
配色小技巧之二:colorbrewer2
这是一个在线配色网站 https://colorbrewer2.org/ 超赞!网站的画风是这样的。
image.png
与RColorBrewer 包一样也是分为sequential,qualitative,diverging三个部分。点击它们会出现不同的颜色分类。这次咱们试一试渐变色。
代码语言:javascript复制ggplot(data=data,aes(name,value,fill=name))
geom_bar(stat = "identity")
theme_bw()
scale_fill_manual(values = c("#f7fcfd","#e5f5f9",
"#ccece6","#99d8c9",
"#66c2a4",
"#41ae76","#238b45","#006d2c","#00441b"))
image.png
友情提示:使用这个在线配色网站需要科学上网
配色小技巧之三:R语言包 RImagePalette
“我于人间全无敌,不与天战与谁战”——柳白
image.png
很喜欢这张柳白大战昊天的照片,喜欢柳白一往无前的大河剑气(视频截图,原视频颜色看起来很纯净),现在我想把剑气的颜色放到我的绘图中,该怎么办呢?
RImagePalette完美解决了这个问题
首先是安装R包
代码语言:javascript复制install.packages("RImagePalette")
读取图片
代码语言:javascript复制library("RImagePalette")
myfigure <- jpeg::readJPEG(file.choose()) #选择你想上传的图片
display_image(myfigure)
image.png
这样,就把照片导入Rstudio了,下面把图片中的颜色提取出来。
颜色提取
代码语言:javascript复制mycolors <- image_palette(myfigure, n=30)
scales::show_col(mycolors)
image.png
颜色提取完了,不过我最想要的白色没提取成功,可能和图片太糊有关。图片里的颜色不能直接复制,我就不试效果了。大家如果知道怎么把这些颜色的代码导出来可以在评论区里说一下,谢谢。
(这里mycolors直接就是包含颜色值的向量)
配色小技巧之四:R语言包 ggsci——一剑破万法!
ggsci我最喜欢的调色R包了,里面包含nature,science,柳叶刀等知名杂志的调色风格。前面介绍的三种方法还是需要我们自己去挑选颜色,去配色。有时候感觉自己配出的颜色还是不好看,ggsci包的出现完美解决了这个问题,与ggplot2包联用可以绘制各式符合杂志要求的配色方案,我最喜欢包里面Nature风格的配色。现在试试Nature期刊的颜色风格。
- 首先是Nature的配色
library(ggsci)
ggplot(data=data,aes(name,value,fill=name))
geom_bar(stat = "identity")
scale_fill_npg()
image.png
- 再来试试science
ggplot(data=data,aes(name,value,fill=name))
geom_bar(stat = "identity")
scale_fill_aaas()
image.png
image.png
好的,今天的分享就到这里,感觉有用的话,各位老铁点个赞吧!
备注
- 小技巧三来自最近刚看到的公众号文章:“R语言作图中的“吸星大法”:捕捉图片上的颜色为我所用!公众号:R语言和统计,作者小善。
- ggsci配色方案表引用自“教你用科学杂志喜欢的配色作图——R包ggsci”作者:stanford_strive。文章链接:https://www.jianshu.com/p/71fc7e2561c4
排版编辑:小明
今天推文的示例代码下载链接会放到次条推文的留言区,如果需要的话可以到次条留言区获取
欢迎大家关注我的公众号