跟着Nature Communications学画图:R语言gg
2021-11-21 本文已影响0人
小明的数据分析笔记本
论文是
image.pngBioactivity descriptors for uncharacterized chemical compounds
本地存储文件名 s41467-021-24150-4.pdf
image.png公众号后台有读者留言问到了这个论文里的一些图的实现办法,但是我没有找到作图用到的原始数据。复现起来还是比较麻烦的。浏览全文的时候发现了其中一个带有底纹的柱形图。这个还是比较有用的。因为有的期刊可能会要求配色只能用黑白灰。区分不同的分组加上底纹可能会比较好看。之前出推文介绍过
patternplot
这个R包画带有底纹的柱形图,但是他的代码和ggplot2的格式区别还挺大的。最近又发现了一个R包ggpattern
,画带有底纹的柱形图或者给柱形图添加图片都非常方便。今天的推文简单介绍一下这个图
ggpattern帮助文档
首先是安装ggpattern
remotes::install_github("coolbutuseless/ggpattern")
查看帮助文档
help(package="ggpattern")
做柱形图填充用到的函数是geom_col_pattern()
,填充的内容有4个,分别是 'stripe' (default), 'crosshatch', 'point', 'circle'
做一个简单的柱形图看下效果
df<-data.frame(x=LETTERS[1:4],
y=5)
library(ggplot2)
library(ggpattern)
ggplot()+
geom_col_pattern(data=df,
aes(x=x,y=y,pattern=x),
#pattern="none",
pattern_fill="gray",
pattern_color="black",
fill="white")+
scale_pattern_manual(values = c("stripe","crosshatch",
"circle","none"))
image.png
这里
-
pattern_size
对应的是内部填充的边框 -
pattern_density
对应的是内部填充的粗细 -
pattern_spacing
对应的设置内部填充的多少
帮助文档里写道填充也可以用point
,但是我用的时候遇到了报错,暂时不知道什么原因
比如
ggplot()+
geom_col_pattern(data=df,
aes(x=x,y=y),
pattern="point",
pattern_fill="gray",
pattern_color="black",
fill="white")
报错是
Error: Don't know the function for pattern point
Run `rlang::last_error()` to see where the error occurred.
按照提示运行rlang::last_error()
,返回内容
<error/rlang_error>
Don't know the function for pattern point
Backtrace:
1. (function (x, ...) ...
22. grid:::drawGTree(x)
24. gridpattern:::makeContent.pattern(x)
25. gridpattern:::get_pattern_fn(x$pattern)
26. `%||%`(...)
Run `rlang::last_trace()` to see the full context.
目前还看不懂报错原因
接下来模仿一下论文中的Figure1b
首先是随便构造一份数据,部分如下
image.png读取数据集,然后把x列和y列粘贴到一起
library(readxl)
library(tidyverse)
df<-read_excel("NC_figure1B.xlsx")
df %>%
mutate(new_col=paste(y,x,sep="")) -> df1
作图代码
library(ggplot2)
library(ggpattern)
df1$new_col<-factor(df1$new_col,
levels = rev(df1$new_col))
ggplot()+
geom_col_pattern(data=df1,aes(y=new_col,x=Molecules),
pattern="stripe",
pattern_fill="grey",
#pattern_color="blue",
pattern_density=0.2,
pattern_size=0,
fill="white",
color="black",
pattern_spacing=0.02,
width=0.5)+
scale_x_continuous(expand = c(0,0),
limits = c(0,6.1),
breaks = c(3,4,5,6),
labels = c(expression(10^3),
expression(10^4),
expression(10^5),
expression(10^6)))+
theme_bw()+
labs(y=NULL)+
ggsave(filename = "1b.pdf",
width=3,
height = 8,
family="serif")
image.png
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!