R语言ggplot2绘制经验累积分布(empirical cumulative distribution)曲线的简单小例子

原创
2021/04/18 21:30
阅读数 3.5K

非常有意思的数据可视化案例 ,原文提出的问题是 学术论文中的作者数量有逐年增加的趋势 ;于是利用R语言里的 rplos 包抓取了 Plos 系列的6本期刊的2006年至2013年的每篇论文里的作者数量 进行可视化展示

原文链接是 https://benjaminlmoore.wordpress.com/2014/04/06/author-inflation-in-academic-literature/

完整的代码链接

https://github.com/blmoore/blogR

原始代码中抓取数据的部分好像不能用了,我稍微改动了一下,选取了2006年到2020年的数据,获取数据的代码这里就不放了,如果需要本文的示例数据可以知己在文末留言

数据已经存储到了文件里 首先是读取数据
library(readr)
df<-read_tsv("author_number.tsv")
head(df)
image.png
期刊分别是
table(df$journal)
image.png

还是Plos系列学术论文2006-2020年间作者数量的数据,这次用 经验累积分布曲线来展示数据。这个图我还是第一次听说。借助ggplot2中的stat_ecdf()函数实现

我们先来看一下帮助文档中的例子

df_1 <- data.frame(
  x = c(rnorm(100, 0, 3), rnorm(100, 0, 10)),
  g = gl(2, 100)
)
p1<-ggplot(df_1, aes(x)) + stat_ecdf(geom = "step")

# Don't go to positive/negative infinity
p2<-ggplot(df_1, aes(x)) + stat_ecdf(geom = "step", pad = FALSE)

# Multiple ECDFs
p3<-ggplot(df_1, aes(x, colour = g)) + stat_ecdf()


library(patchwork)

p1+p2+p3
image.png

这里新学到一个函数gl(),生成因子数据,比如

gl(2, 8, labels = c("Control""Treat"))
image.png

参数的意思是

  • 两种因子,每种8个,总共重复一次,因子的标签是 Control 和 Treat

之前我实现这个都是用rep()函数

再来一个例子

gl(2, 1, 20)
image.png

两个因子,每种一个,重复20次

接下来用作者数据试试
ggplot(df, aes(x=auth_num, col=journal)) + 
  stat_ecdf(geom="smooth", se=F, size=1.2) + 
  theme_bw() +
  scale_x_log10(breaks=c(1:5, seq(10, 50, by=10),
                         100, 200, 300,400,500)) +
  theme(legend.position=c(.75,.33),
        panel.grid = element_blank()) +
  labs(x="Number of authors per paper"
       y="ECDF",
       col="") + 
  coord_cartesian(xlim=c(1,500)) +
  scale_color_brewer(type="qual", palette=6)
image.png

好了,今天的内容就到这里了

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!


本文分享自微信公众号 - 小明的数据分析笔记本(gh_0c8895f349d3)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部