前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言ggplot2科研数据作图配色的一些小技巧

R语言ggplot2科研数据作图配色的一些小技巧

作者头像
用户7010445
发布2021-07-12 15:48:16
9.2K0
发布2021-07-12 15:48:16
举报
文章被收录于专栏:小明的数据分析笔记本

本篇推文来自于公众号读者的投稿

如果你在读研读博的过程中积累了一些经验,不管内容是关于数据处理论文写作,还是实验室的家常里短,师兄师姐的爱恨情仇,都欢迎你来公众号投稿。

以下是正文内容

大家好,在这里给大家介绍一下使用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的配色
代码语言:javascript
复制
library(ggsci)
ggplot(data=data,aes(name,value,fill=name))+
  geom_bar(stat = "identity")+
  scale_fill_npg()

image.png

  • 再来试试science
代码语言:javascript
复制
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

排版编辑:小明

今天推文的示例代码下载链接会放到次条推文的留言区,如果需要的话可以到次条留言区获取

欢迎大家关注我的公众号

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本篇推文来自于公众号读者的投稿
    • 以下是正文内容
      • 备注
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档