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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android layout_width 属性,android:layout_weight属性详解

在android开发中LinearLayout很常用,LinearLayout的内控件的android:layout_weight在某些场景显得非常重要,比如我们需要按比例显示。android并没用提供table这样的控件,虽然有TableLayout,但是它并非是我们想象中的像html里面的t…

angular的$http发送post,get请求无法传送参数的问题

2019独角兽企业重金招聘Python工程师标准>>> 用$http进行异步请求的时候发现了一个奇怪的事情,用$http.post(url,data)的方法进行请求,后台死活接收不到data的参数,真是百思不得姐啊..... 折腾了老半天才在stackoverflow上找到答案…

python变量和常量_Python数学模块常量和示例

python变量和常量Python数学模块常量 (Python math module constants) In the math module, there are some of the defined constants that can be used for various mathematical operations, these are the mathematical constants and returns their values equivalent to …

怎样解决Word文档图标无法正常显示的问题?

此类问题是由于 Word 程序相关组件损坏导致,可以通过下面的方案来解决:步骤/方法按键盘上的 Windows 徽标健 R 键,输入 regedit,按回车键。(若弹出用户账户控制窗口,请允许以继续)对于 Word 200…

android 对话框的父view是谁,android – 在对话框中获取相对于其父级的视图位置

我想要做的是,从按钮边缘到屏幕上的一点画一条线……我正在使用一个对话框片段…我尝试的所有函数总是返回0点…我试过以下:Overrideprotected Dialog createDialog(Bundle savedInstanceState, FragmentActivity activity){Dialog d builder.create();View v Lay…

np.radians_带有Python示例的math.radians()方法

np.radiansPython math.radians()方法 (Python math.radians() method) math.radians() method is a library method of math module, it is used to convert angle value from degree to radians, it accepts a number and returns the angle value in radians. math.radians(…

怎么用git将本地代码上传到远程服务器_git之如何把本地文件上传到远程仓库的指定位置...

2018.11.26添加内容:对于自己的仓库,我们建议将远程仓库通过clone命令把整个仓库克隆到本地的某一路径下。这样的话我们从本地向远程仓库提交代码时,就可以直接把需要提交的文件拖到我们之前克隆下来的路径下,接下来在这整个仓库下…

MathType与Origin是怎么兼容的

MathType作为一款常用的公式编辑器,可以与很多的软件兼容使用。Origin虽然是一款专业绘图与数据分析软件,但是在使用过程中也是可以用到MathType。它可以帮助Origin给图表加上标签,或者在表格中增加公式标签。但是一些用户朋友对这个不能不是…

c语言 函数的参数传递示例_llround()函数以及C ++中的示例

c语言 函数的参数传递示例C llround()函数 (C llround() function) llround() function is a library function of cmath header, it is used to round the given value and casts to a long long integer, it accepts a number and returns the integer (long long int) valu…

android requestmtu,android - 如何设置/获取/请求从Android到iOS或反之亦然BLE的MTU? - 堆栈内存溢出...

我们正在将MTU请求从Android发送到iOSAndroid-从此函数onServicesDiscovered回调请求MTU但是我不知道如何确定对等设备支持是否请求了MTU,以及如何实际协商的MTU。 仅在API级别22(Android L 5.1)中添加了必需的函数:BluetoothGattCallback.onMtuChanged(…

AutoBookmark Adobe Acrobat快速自动批量添加书签/目录

前言 解决问题:Adobe Acrobat快速自动批量添加书签/目录, 彻底告别手动添加书签的烦恼 AutoBookmark 前言1 功能简介2 实现步骤2.1 下载插件2.2 将插件复制到Acrobat文件夹下2.3 自动生成书签 1 功能简介 我们在查看PDF版本的论文或者其他文件的时候, 虽然相比较于…

Python调用微博API获取微博内容

一:获取app-key 和 app-secret 使用自己的微博账号登录微博开放平台(http://open.weibo.com/),在微博开放中心下“创建应用”创建一个应用,应用信息那些随便填,填写完毕后,不需要提交审核,需要的只是那个ap…

python独立log示例_带有Python示例的math.log1p()方法

python独立log示例Python math.log1p()方法 (Python math.log1p() method) math.log1p() method is a library method of math module, it is used to get the natural logarithm of 1x (base e), it accepts a number and returns the natural logarithm of 1number on base e…

15947884 oracle_Oracle Patch Bundle Update

一、相关知识介绍以前只知道有CPU(Critical Patch Update)和PSU(Patch Set Update),不知道还有个Bundle Patch,由于出现了TNS-12531的BUG问题,需要在windows上打至少为Patch bundle 22补丁。通过学习查找:Oracle里的补丁具体分为如下这样6种类型&#xf…

鸿蒙系统hdc,HDC2020有看头:要揭开鸿蒙系统和EMUI11神秘面纱?

IFA2020算是HDC2020的预热吧,一个是9月2日在德国柏林举办的消费电子展,一个是在松山湖举办的华为开发者大会,二者的目的都一样,但也有一丝不同,IFA是为了让老外了解HMS、了解华为的智慧生态,而HDC2020就是要…

UVA 12501 Bulky process of bulk reduction ——(线段树成段更新)

和普通的线段树不同的是,查询x~y的话,给出的答案是第一个值的一倍加上第二个值的两倍一直到第n个值的n倍。 思路的话,就是关于query和pushup的方法。用一个新的变量sum记录一下这个区间里面按照答案给出的方式的值,比如说&#xf…

gdb ldexp_带有Python示例的math.ldexp()方法

gdb ldexpPython math.ldexp()方法 (Python math.ldexp() method) math.ldexp() method is a library method of math module, it is used to calculate expression x*(2**i), where x is a mantissa and i is an exponent. It accepts two numbers (x is either float or inte…

windows安装包删了会有影响吗_win7系统删除系统更新安装包的详细教程

win7系统使用久了,好多网友反馈说win7系统删除系统更新安装包的问题,非常不方便。有什么办法可以永久解决win7系统删除系统更新安装包的问题,面对win7系统删除系统更新安装包的图文步骤非常简单,只需要1.其实在win7旗舰版系统中&a…

解压android img文件怎么打开,解压压缩android img文件

boot.imgboot和recovery映像并不是一个完整的文件系统,它们是一种android自定义的文件格式,该格式包括了2K的文件头,后面紧跟着是用gzip压缩过的内核,再后面是一个ramdisk内存盘,ramdisk映像是一个最基础的小型文件系统…

Java String 学习笔记 (一)

2019独角兽企业重金招聘Python工程师标准>>> ###String 简介 String 并非java的8大基本数据类型之一。 java中基本数据类型存储在栈内存中。而String不是,新new的String 对象存储在堆内存中。而字符串存储在常量池中。String对象的引用存储中栈内存中。 …