Hadley Wickham创建的可视化包ggplot2可以流畅地进行优美的可视化,但是如果要通过ggplot2定制一套图形,尤其是适用于杂志期刊等出版物的图形,对于那些没有深入了解ggplot2的人来说就有点困难了,ggplot2的部分语法是很晦涩的。为此Alboukadel Kassambara创建了基于ggplot2的可视化包ggpubr用于绘制符合出版物要求的图形。

安装及加载ggpubr包

# 直接从CRAN安装

install.packages("ggpubr", repo="http://cran.us.r-project.org")

# 从GitHub上安装最新版本

install.packages("devtools", repo="http://cran.us.r-project.org")

library(devtools)

install_github("kassambara/ggpubr")

# 安装完之后直接加载就行:

library(ggpubr)

ggpubr可绘制图形

ggpubr可绘制大部分我们常用的图形,下面逐个介绍。

分布图(Distribution)

带有均值线和地毯线的密度图

#构建数据集

set.seed(123)

df

weight=c(rnorm(200, 55), rnorm(200, 58)))

# 预览数据格式

head(df)

# 绘制密度图

ggdensity(df, x="weight", add = "mean", rug = TRUE, color = "sex", fill = "sex",

palette = c("#00AFBB", "#E7B800"))

图1. 密度图展示不同性别分组下体重的分布,X轴为体重,Y轴为自动累计的密度,X轴上添加地毯线进一步呈现样本的分布;按性别分别组标记轮廓线颜色,再按性别填充色展示各组的分布,使用palette自定义颜色,是不是很舒服。

带有均值线和边际地毯线的直方图

gghistogram(df, x="weight", add = "mean", rug = TRUE, color = "sex", fill = "sex",

palette = c("#00AFBB", "#E7B800"))

图2. 带有均值线和边际地毯线的直方图,只是把密度比例还原为了原始数据counts值

箱线/小提琴图(barplot/violinplot)

箱线图+分组形状+统计

#加载数据集ToothGrowth

data("ToothGrowth")

df1

head(df1)

p

palette = c("#00AFBB", "#E7B800", "#FC4E07"),

add = "jitter", shape="dose")#增加了jitter点,点shape由dose映射

p

图3. 箱线图按组着色,同时样本点标记不同形状可以一步区分组或批次

箱线图+分组形状+统计

# 增加不同组间的p-value值,可以自定义需要标注的组间比较

my_comparisons

p+stat_compare_means(comparisons = my_comparisons)+ #不同组间的比较

stat_compare_means(label.y = 50)

图4. stat_compare_means添加组间比较连线和统计P值

内有箱线图的小提琴图+星标记

ggviolin(df1, x="dose", y="len", fill = "dose",

palette = c("#00AFBB", "#E7B800", "#FC4E07"),

add= "boxplot", add.params = list(fill="white"))+ stat_compare_means(comparisons = my_comparisons, label= "p.signif")+#label这里表示选择显著性标记(星号) stat_compare_means(label.y = 50)

图5. ggviolin绘制小提琴图, add = "boxplot"中间再添加箱线图,stat_compare_means中,设置lable="p.signif",即可添加星添加组间比较连线和统计P值按星分类。

条形/柱状图(barplot)

data("mtcars")

df2

df2$cyl

df2$name

head(df2[, c("name", "wt", "mpg", "cyl")])

ggbarplot(df2, x="name", y="mpg", fill = "cyl", color = "white",

palette = "npg", #杂志nature的配色

sort.val = "desc", #下降排序

sort.by.groups=FALSE, #不按组排序

x.text.angle=60)

图6. 柱状图展示不同车的速度,按cyl为分组信息进行填充颜色,颜色按nature配色方法(支持 ggsci包中的本色方案,如: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty"),按数值降序排列。

# 按组进行排序

ggbarplot(df2, x="name", y="mpg", fill = "cyl", color = "white",

palette = "aaas", #杂志Science的配色

sort.val = "asc", #上升排序,区别于desc,具体看图演示

sort.by.groups=TRUE,x.text.angle=60) #按组排序 x.text.angle=90

图7. 由上图中颜色改为Sciences配色方案(为什么感觉nature和sciences的配色方案没有文章里的看着舒服呢?),按组升序排布,且调整x轴标签60度角防止重叠。

偏差图

偏差图展示了与参考值之间的偏差

df2$mpg_z

df2$mpg_grp

head(df2[, c("name", "wt", "mpg", "mpg_grp", "cyl")])

ggbarplot(df2, x="name", y="mpg_z", fill = "mpg_grp", color = "white",

palette = "jco", sort.val = "asc", sort.by.groups = FALSE,

x.text.angle=60, ylab = "MPG z-score", xlab = FALSE, legend.title="MPG Group")

图8. 基于Zscore的柱状图,就是原始值减均值,再除标准差。按jco杂志配色方案,升序排列,不按组排列。

坐标轴变换

ggbarplot(df2, x="name", y="mpg_z", fill = "mpg_grp", color = "white",

palette = "jco", sort.val = "desc", sort.by.groups = FALSE,

x.text.angle=90, ylab = "MPG z-score", xlab = FALSE,

legend.title="MPG Group", rotate=TRUE, ggtheme = theme_minimal()) # rotate设置x/y轴对换

图9. rotate=TRUE翻转坐标轴,柱状图秒变条形图

棒棒糖图(Lollipop chart)

棒棒图可以代替条形图展示数据

ggdotchart(df2, x="name", y="mpg", color = "cyl",

palette = c("#00AFBB", "#E7B800", "#FC4E07"),

sorting = "ascending",

add = "segments", ggtheme = theme_pubr())

图10. 柱状图太多了单调,改用棒棒糖图添加多样性

可以自设置各种参数

ggdotchart(df2, x="name", y="mpg", color = "cyl",

palette = c("#00AFBB", "#E7B800", "#FC4E07"),

sorting = "descending", add = "segments", rotate = TRUE,

group= "cyl", dot.size = 6,

label = round(df2$mpg), font.label = list(color="white",

size=9, vjust=0.5), ggtheme = theme_pubr())

图11. 棒棒糖图简单调整,rotate = TRUE转换坐标轴, dot.size = 6调整糖的大小,label = round()添加糖心中的数值,font.label进一步设置字体样式

棒棒糖偏差图

ggdotchart(df2, x="name", y="mpg_z", color = "cyl",

palette = c("#00AFBB", "#E7B800", "#FC4E07"),

sorting = "descending", add = "segment",

add.params = list(color="lightgray", size=2),

group= "cyl", dot.size = 6, label = round(df2$mpg_z, 1),

font.label = list(color="white", size=9, vjust=0.5),

ggtheme = theme_pubr())+ geom_line(yintercept=0, linetype=2, color="lightgray")

图12. 同柱状图类似,用Z-score的值代替原始值绘图。

Cleveland点图

ggdotchart(df2, x="name", y="mpg", color = "cyl",

palette = c("#00AFBB", "#E7B800", "#FC4E07"),

sorting = "descending",

rotate = TRUE, dot.size = 2, y.text.col=TRUE,

ggtheme = theme_pubr())+ theme_cleveland()

图13. theme_cleveland()主题可设置为Cleveland点图样式

我测试的工作环境

sessionInfo()

R version 3.4.1 (2017-06-30)

Platform: x86_64-pc-linux-gnu (64-bit)

Running under: Ubuntu 16.04.3 LTS

Matrix products: default

BLAS: /usr/lib/openblas-base/libblas.so.3

LAPACK: /usr/lib/libopenblasp-r0.2.18.so

locale:

[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8

[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C

[9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:

[1] stats graphics grDevices utils datasets methods base

other attached packages:

[1] bindrcpp_0.2 ggpubr_0.1.6.999 magrittr_1.5 ggplot2_2.2.1 devtools_1.13.4

loaded via a namespace (and not attached):

[1] Rcpp_0.12.14 bindr_0.1 munsell_0.4.3 colorspace_1.3-2 R6_2.2.2 rlang_0.1.4 httr_1.3.1

[8] plyr_1.8.4 dplyr_0.7.4 tools_3.4.1 grid_3.4.1 gtable_0.2.0 git2r_0.19.0 withr_2.1.0

[15] lazyeval_0.2.1 digest_0.6.12 assertthat_0.2.0 tibble_1.3.4 ggsignif_0.4.0 ggsci_2.8 purrr_0.2.4

[22] curl_3.0 memoise_1.1.0 glue_1.2.0 labeling_0.3 compiler_3.4.1 scales_0.5.0 pkgconfig_2.0.1

r语言descstats_一条命令轻松绘制CNS顶级配图-ggpubr相关推荐

  1. 一条命令轻松绘制CNS顶级配图-ggpubr

    本文转载自"EasyChart",己获授权.本平台编辑对内容进行测试.修改和补充. Hadley Wickham创建的可视化包ggplot2可以流畅地进行优美的可视化,但是如果要通 ...

  2. 教你如何使用一条命令轻松查看电脑所支持的最大运行内存

    教你如何使用一条命令轻松查询电脑所支持的最大运行内存 首先,使用[win+R]组合快捷键,打开运行窗口,并输入cmd.如图所示. 其次,在命令提示符窗口中输入命令"wmic memphysi ...

  3. R语言ggplot2可视化:使用ggplot2绘制按时间顺序排列的时间线图(chronological timeline plot)

    R语言ggplot2可视化:使用ggplot2绘制按时间顺序排列的时间线图(chronological timeline plot) 目录 R语言ggplot

  4. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(添加箱图、带缺口的小提琴图、小提琴图)实战

    R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(添加箱图.带缺口的小提琴图.小提琴图)实战 目录 R语言使用ggplot2包geom_jit ...

  5. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(颜色配置:连续色彩、离散色彩、色彩梯度)实战

    R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(颜色配置:连续色彩.离散色彩.色彩梯度)实战 目录 R语言使用ggplot2包geom_ji ...

  6. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(自定义色彩、形状)实战

    R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(自定义色彩.形状)实战 目录 R语言使用ggplot2包geom_jitter()函数绘制分 ...

  7. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(双分类变量分组:色彩配置、形状配置)实战

    R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(双分类变量分组:色彩配置.形状配置)实战 目录 R语言使用ggplot2包geom_jitt ...

  8. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(添加均值、标准偏差)实战

    R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(添加均值.标准偏差)实战 目录 R语言使用ggplot2包geom_jitter()函数绘制 ...

  9. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(编写自定义函数添加均值、标准偏差)实战

    R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(编写自定义函数添加均值.标准偏差)实战 目录 R语言使用ggplot2包geom_jitte ...

最新文章

  1. 解决目录和tgz文件等不显示相应颜色
  2. 少儿编程教会孩子如何思考,重视孩子的素质提升
  3. Vue.js 条件渲染
  4. Android的服务(Service)(二)Service的自动重启问题
  5. 资格赛:题目1:同构
  6. 开榨油店的失败教训_开榨油坊风险大吗?该如何投资
  7. 查看linux环境下cudnn是否安装,Linux下安装cuda和对应版本的cudnn
  8. BestCoder Round #56/hdu5463 Clarke and minecraft 水题
  9. python游戏源码回合制游戏_Python回合制小游戏对战程序
  10. matlab方差 anov,方差分析
  11. 百度文库f12免费复制文章
  12. 《统计学》第八版贾俊平第五章概率与概率分布
  13. 委外订单--采购入库单不能记账
  14. okhttp请求使用cookie
  15. VMware虚拟机网络设置
  16. QT关于屏幕保护程序
  17. C++ 图书馆管理系统
  18. Proteus仿真——常用元件
  19. Java 升级那么快,多个版本如何灵活切换和管理?
  20. sql 创建学生表 课程表 成绩表

热门文章

  1. android 抓取webview中的所有图片_如何一键提取PDF文档中的所有图片?
  2. 300小时成为java程序员_直击面试现场: Java程序员3轮6小时面试, 成功拿到阿里offer!...
  3. php中的缓,php中的缓存机制解释
  4. python批量跑plsql_python实现自动化报表(Oracle/plsql/Excel/多线程)
  5. linux tips 技巧笔记一
  6. 8.4. su - root
  7. MDK C++中对内联的极度优化
  8. 连接fiddler后手机无法显示无网络
  9. 《小强升职记》读后感和思维导图
  10. 6款html5模板下载