R语言ggplot2画小提琴图(violin|R语言ggplot2画小提琴图(violin plot)展示学术论文作者数量

非常有意思的数据可视化案例 ,原文提出的问题是 学术论文中的作者数量有逐年增加的趋势 ;于是利用R语言里的 rplos 包抓取了 Plos 系列的6本期刊的2006年至2013年的每篇论文里的作者数量 进行可视化展示
【R语言ggplot2画小提琴图(violin|R语言ggplot2画小提琴图(violin plot)展示学术论文作者数量】原文链接是
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)

R语言ggplot2画小提琴图(violin|R语言ggplot2画小提琴图(violin plot)展示学术论文作者数量
文章图片
image.png 期刊分别是
table(df$journal)

R语言ggplot2画小提琴图(violin|R语言ggplot2画小提琴图(violin plot)展示学术论文作者数量
文章图片
image.png 首先通过summary()函数看一些数据的基本情况
summary(df)

R语言ggplot2画小提琴图(violin|R语言ggplot2画小提琴图(violin plot)展示学术论文作者数量
文章图片
image.png 作者数量最多的竟然有446人,中位数是6个人,符合日常认知
我们看一下400多个作者的论文是什么?
library(dplyr)df%>% filter(auth_num == 446) -> df1df1$id

R语言ggplot2画小提琴图(violin|R语言ggplot2画小提琴图(violin plot)展示学术论文作者数量
文章图片
image.png R语言ggplot2画小提琴图(violin|R语言ggplot2画小提琴图(violin plot)展示学术论文作者数量
文章图片
image.png
这个应该是采集了很多人的数据,可能是把参与实验的所有人全都列成作者了
接下来就是小提琴图展示每个期刊作者数量的分布了 用原始数据作图代码和结果如下
ggplot(df, aes(x=journal, y=auth_num, fill=journal)) + geom_violin(scale="width") + geom_boxplot(width=.12, fill=I("black"), notch=T, outlier.size=NA, col="grey40") + stat_summary(fun="median", geom="point", shape=20, col="white") + #scale_y_log10(breaks=c(1:5, seq(10, 50, by=10), 100, 200, 300)) + coord_flip() + labs(x="", y="Number of authors per paper") + theme_classic() + theme(legend.position="none") + scale_fill_brewer()

R语言ggplot2画小提琴图(violin|R语言ggplot2画小提琴图(violin plot)展示学术论文作者数量
文章图片
image.png 这个结果不太好看,所有作者对原始数据做了log10转化
ggplot(df, aes(x=journal, y=auth_num, fill=journal)) + geom_violin(scale="width") + geom_boxplot(width=.12, fill=I("black"), notch=T, outlier.size=NA, col="grey40") + stat_summary(fun="median", geom="point", shape=20, col="white") + scale_y_log10(breaks=c(1:5, seq(10, 50, by=10), 100, 200, 300)) + coord_flip() + labs(x="", y="Number of authors per paper") + theme_classic() + theme(legend.position="none") + scale_fill_brewer()

R语言ggplot2画小提琴图(violin|R语言ggplot2画小提琴图(violin plot)展示学术论文作者数量
文章图片
image.png
log10转换 是一种比较好的方案当数据有明显的离群值的时候
这次新学到的知识点包括
lappy()函数指定参数
lapply(files_all, read_tsv, col_type= list( col_character(), col_character(), col_character(), col_character())) %>% bind_rows -> data_all

统计字符串中指定字符的数量
library(stringr) str_count("A,B,C",pattern=",")

好了,今天的内容就到这里了
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

    推荐阅读