3 min read

"技术:ggpubr提高作图效率

"技术 系列导航

1 "技术:Poisson分布、回归Python实现 2017-12-20
2 "技术:beta系数理解 2017-12-21
3 "技术:Python List剔除重复值 2017-12-21
4 "技术:t-SNE处理高维数据可视化 2017-12-21
5 "技术:用R语言进行文件系统管理 2017-12-21
6 "技术:fct_lump分箱使用方法 2017-12-22
7 "技术:F1分数为什么可以看不平衡样本的预测能力 2017-12-27
8 "技术:Fisher的一个矩阵预算 2017-12-27
9 "技术:case_when使用方法 2017-12-28
10 "技术:Python接口函数 2017-12-28
11 "技术:fct_relevel调整对照组,批量的方案 2017-12-30
12 "技术:python中变量批量处理集成方案 2017-12-30
13 "技术:Python接口函数-中台 2018-01-03
14 "技术:使用pbd包进行debug 2018-01-03
15 "技术:R实现随机分组 2018-01-04
16 "技术:jiebaR包做文本清洗 2018-01-05
17 "技术:r_WACC使用说明 2018-01-05
18 "技术:使用switchhost安装host 2018-01-05
19 "技术:Git的下载问题 2018-01-06
20 "技术:新闻爬虫 2018-01-07
21 "技术:Scalable Data Processing in R 2018-01-08
22 "技术:使用git创建一个自己的本地仓库 2018-01-11
23 "技术:dashboard构建,来自yihui的包 2018-01-12
24 "技术:最大似然估计再理解 2018-01-12
25 "技术:itchat包提取微信好友公开数据 2018-01-13
26 "技术:do函数和biglm包 2018-01-17
27 "技术:Imputer后X少了一列 2018-01-18
28 "技术:mac连接mysql,理论上win7也可以 2018-01-19
29 "技术:t-SNE理论部分补充 2018-01-22
30 "技术:RMarkdown的使用技巧 2018-01-30
31 "技术:通过anova检验,理解R2、R_adj.2、F值 2018-01-31
32 "技术:ggridges 山峦图 学习笔记 2018-02-02
33 "技术:Tidyverse使用技巧 2018-02-02
34 "技术:XGBoost 学习笔记 2018-02-02
35 "技术:分布变离散,或者纠正skew 2018-02-02
36 "技术:rsq在R中自定义函数 2018-02-03
37 "技术:Jupyter实战 2018-02-13
38 "技术:美化与定制 2018-02-21
39 "技术:数据对比可视化指南 2018-02-22
40 "技术:功能体验 2018-02-26
41 "技术:高效数据处理 2018-02-27
42 "技术:模型优化技巧 2018-03-05
43 "技术:原理与应用 2018-03-06
44 "技术:模型与可视化 2018-03-08
45 "技术:美化与交互指南 2018-03-11
46 "技术:高效操作指南 2018-03-14
47 "技术:用法与优化技巧 2018-03-17
48 "技术:效率提升指南 2018-03-18
49 "技术:问题排查技巧 2018-03-18
50 "技术:高效操作指南 2018-03-19
51 "技术:方法与代码示例 2018-03-21
52 "技术:进阶技巧与优化 2018-03-21
53 "技术:实战示例 2018-03-22
54 "技术:效率与规范指南 2018-03-24
55 "技术:dplython包测评 2018-03-25
56 "技术:原理与实现 2018-04-02
57 "技术:原理与应用解析 2018-04-03
58 "技术:实战指南 2018-04-05
59 "技术:核心语法与函数整理 2018-04-05
60 "技术:复利计算与应用 2018-04-08
61 "技术:简单规则模型解析 2018-04-14
62 "技术:高效代码设计指南 2018-04-25
63 "技术:原理与应用学习笔记 2018-04-29
64 "技术:实战指南 2018-04-29
65 "技术:原理与应用 2018-05-01
66 "技术:表格格式化指南 2018-05-02
67 "技术:原理与应用介绍 2018-05-08
68 "技术:高效文本拼接 2018-05-11
69 "技术:方法与实践学习笔记 2018-05-12
70 "技术:方法与工具 2018-05-12
71 "技术:功能解析 2018-05-17
72 "技术:高效数据输入 2018-05-21
73 "技术:基础模型与方法 2018-05-22
74 "技术:功能与使用体验 2018-05-26
75 "技术:特征筛选学习笔记 2018-05-29
76 "技术:实战技巧 2018-05-30
77 "技术:建模思路解析 2018-06-03
78 "技术:策略与实战 2018-06-03
79 "技术:数据展示指南 2018-06-04
80 "技术:包与环境配置指南 2018-07-14
81 "技术:高效操作指南 2018-07-19
82 "技术:方法与案例解析 2018-07-24
83 "技术:统计建模学习笔记 2018-07-24
84 "技术:展示技巧与原则 2018-08-10
85 "技术:数据采集实战技巧 2018-08-21
86 "技术:指标设计学习笔记 2018-09-20
87 "技术:建模流程实战 2018-10-01
88 "技术:大规模数据探索 2018-10-20
89 "技术:文本提取与分析 2018-10-20
90 "技术:原理与R实现实战 2018-10-21
91 "技术:学习资源获取技巧 2018-10-23
92 "技术:深度学习模型实战 2018-10-24
93 "技术:实战指南 2018-10-30
94 "技术:分析与展示指南 2018-11-03
95 "技术:图片编辑与转换 2018-11-03
96 "技术:安装与使用基础学习笔记 2018-11-07
97 "技术:非结构化数据处理 2018-11-29
98 "技术:表格美化技巧 2018-12-13
99 "技术:分类数据可视化 2018-12-24
100 "技术:流程图绘制技巧 2018-12-24
101 "技术:自动化设置 2018-12-28
102 "技术:协作与版本控制 2018-12-29
103 "技术:pipeline设计 2018-12-30
104 "技术:Git历史记录清理 2018-12-31
105 "技术:AUC指标对比 2019-01-01
106 "技术:时间序列可视化 2019-01-01
107 "技术:变量命名工具指南 2019-01-02
108 "技术:网页自动化截图 2019-01-02
109 "技术:配置与优化 2019-01-03
110 "技术:原理与应用 2019-01-07
111 "技术:语法与核心概念 2019-01-14
112 "技术:R包徽章设计 2019-01-15
113 "技术:项目结构设计 2019-01-21
114 "技术:文本分类基础任务 2019-01-22
115 "技术:线性与非线性模型 2019-01-22
116 "技术:有效性验证 2019-01-27
117 "技术:评估与应用 2019-01-29
118 "技术:循环神经网络入门 2019-01-30
119 "技术:长短期记忆网络入门 2019-01-30
120 "技术:for循环示例 2019-02-03
121 "技术:基础到进阶 2019-02-06
122 "技术:查询与整合 2019-02-06
123 "技术:方法与案例 2019-02-14
124 "技术:R包高效开发指南 2019-02-20
125 "技术:解析与操作 2019-02-20
126 "技术:训练与预测 2019-02-25
127 "技术:原理与代码 2019-02-26
128 "技术:GitHub个人访问令牌(PAT)设置 2019-03-04
129 "技术:方法与工具 2019-03-07
130 "技术:文本特征提取示例 2019-03-08
131 "技术:基础任务示例 2019-03-18
132 "技术:条形图与表头设计 2019-03-20
133 "技术:连续与分类变量差异 2019-03-30
134 "技术:思路与方法 2019-04-08
135 "技术:方法与工具 2019-04-15
136 "技术:多格式读取 2019-04-16
137 "技术:方法与工具 2019-05-11
138 "技术:Git/GitHub/GitLab 2019-05-13
139 "技术:命令与操作 2019-05-19
140 "技术:协作与版本控制 2019-05-26
141 "技术:语法与实践 2019-06-28
142 "技术:功能与API 2019-07-13
143 "技术:安装与使用 2019-07-24
144 "技术:高效数据处理 2019-10-09
145 "技术:性能优化技巧 2019-10-12
146 "技术:配置与运维 2019-10-29
147 "技术:原理与经典模型 2019-12-25
148 "技术:构建到发布流程 2019-12-26
149 "技术:方法与案例 2019-12-27
150 "技术:命令与自动化 2019-12-30
151 "技术:Pandas数据处理实战指南 2020-01-19
152 "技术:特征工程之目标编码学习笔记 2020-01-20
153 "技术:文档编写与美化 2020-01-28
154 "技术:核心算法与应用 2020-01-29
155 "技术:流程图绘制技巧 2020-01-29
156 "技术:DataCamp课程笔记 2020-01-31
157 "技术:Python实用代码片段合集 2020-01-31
158 "技术:自动化构建流程 2020-02-02
159 "技术:自动化工作流配置 2020-02-04
160 "技术:高效查找代码与项目 2020-02-11
161 "技术:代码环境快速部署 2020-02-24
162 "技术:USD数据分析论文收录暨GitBook发布 2020-05-02
163 "技术:Causal Forest 2021-03-18

{r setup, include=FALSE} knitr::opts_chunk$set(eval = FALSE) ggpubr提高作图效率 。 这个包R的作图省略了好多步骤,类似于爬虫的postman。

实际上,我们主要做统计分析,画太多时间画图,很不情愿。

{r} library(ggpubr) library(tidyverse)

图+均线

{r} mtcars %>% gather(key,value,everything()) %>% group_by(key) %>% summarise(n_distinct(value)) %>% arrange(desc(`n_distinct(value)`)) mtcars1 <- mtcars %>% mutate(am = as.factor(am)) mtcars1 %>% ggdensity(x = "qsec", # 注意变量str化 col = "am", add = "mean", # 加均线 rug = TRUE, # rug | logical value. If TRUE, add marginal rug. fill = "am", # 这是做频率图我经常忘了,为了好看。 palette = c("#00AFBB", "#E7B800")) # 这个我真的不记得。 mtcars1 %>% gghistogram(x = "qsec", # 注意变量str化 col = "am", add = "mean", # 加均线 rug = TRUE, # rug | logical value. If TRUE, add marginal rug. fill = "am", # 这是做频率图我经常忘了,为了好看。 palette = c("#00AFBB", "#E7B800")) # 这个我真的不记得。

注意变量str化,因此要因子化提前mutate, 这个图唯一好的,就是可以加均线而已, rug就是图下的竖线,不明白。 palette = c("#00AFBB", "#E7B800"))两种对比,推荐的配色。 ggdensitygghistogram取决于离散程度。

ECDF

{r} mtcars1 %>% ggplot(aes(qsec)) + stat_ecdf(aes(color = am,linetype = am), geom = "step", size = 1.5) + scale_color_manual(values = c("#00AFBB", "#E7B800"))+ labs(y = "f(weight)")

不好看。

箱线图、小提琴图和p值

在前面的eda解释中,箱线图主要用于一个分类和一个连续变量的分析。

{r} mtcars2 <- mtcars1 %>% mutate(cyl = as.factor(cyl)) mtcars2 %>% ggboxplot( x = "cyl", y = "qsec", col = "cyl", palette = c("#00AFBB", "#E7B800", "#FC4E07"), add = "jitter") + stat_compare_means( comparisons = list( c("4", "6"), c("4", "8"), c("6", "8") ))

经过之前重复抽样的理解,这里对样本间均值差异的p值,应该有很深的理解了,因此,这里还可以比较,这样的话,直接给p值,这样不会让人看图很confuse。 stat_compare_means完成这一目标,直接放入对比pairs就好。 palette = c("#00AFBB", "#E7B800", "#FC4E07")三个比较的配色。

{r} mtcars2 %>% ggviolin( x = "cyl", y = "qsec", fill = "cyl", palette = c("#00AFBB", "#E7B800", "#FC4E07"), add = "boxplot", add.params = list(fill="white")) + stat_compare_means( comparisons = list( c("4", "6"), c("4", "8"), c("6", "8") ), label = "p.signif", label.y = 50 )

这里修改add,换成内置箱形图。 add.params改变箱形图的颜色。 label = "p.signif",我也觉得数字很烦,这个比较简洁。其中ns: p > 0.05

  • ns: p > 0.05
  • *: p <= 0.05
  • **: p <= 0.01
  • ***: p <= 0.001
  • ****: p <= 0.0001

label.y = 50定位p值图中显示位置。

条形图+不分组排序

这个我一直在ggplot里面没有实现好。 可以借鉴一下。

{r} for (i in c(TRUE,FALSE)){ print( mtcars %>% mutate(cyl = as.factor(cyl), ) %>% rownames_to_column(var = "name") %>% ggbarplot(x="name", y="mpg", fill = "cyl", color = "white", palette = "jco",#杂志jco的配色 sort.val = "desc",#下降排序 sort.by.groups=i,#不按组排序 x.text.angle=60) ) }

参考ggplot2中实现for循环

我之前一直没有很容易的放在一张图比较。

x.text.angle=60这个更加简单了。 theme(axis.text.x = element_text(angle = 70, hjust = 1)) 比较复杂。

偏差图

这些美化,都是我需要提前做好的。

{r} mtcars %>% rownames_to_column(var = "name") %>% mutate(cyl = as.factor(cyl), mpg_z = (mpg-mean(mpg))/sd(mpg), mpg_grp = case_when( mpg_z<0 ~ "low", TRUE ~ "high ), mpg_grp = as.factor(mpg_grp), mpg_grp = fct_relevel(mpg_grp,"low", "high") ) %>% ggbarplot( 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 )

这里其实使用了标准化处理$\frac{x-\mu}{\sigma}$

mpg_z = (mpg-mean(mpg))/sd(mpg),
mpg_grp = case_when(
 mpg_z<0 ~ "low",
 TRUE ~ "high
),
mpg_z = fct_relevel(mpg_z,"low", "high")

棒棒糖图(Lollipop chart)

这个之前当初我搞了很久了。 终于出了简单的方法了。

{r} for (i in c(TRUE,FALSE)) { mtcars %>% rownames_to_column(var = "name") %>% mutate(cyl = as.factor(cyl)) %>% ggdotchart( x="name", y="mpg", color = "cyl", palette = c("#00AFBB", "#E7B800", "#FC4E07"), sorting = "ascending", add = "segments", rotate=i, ggtheme = theme_minimal() ) }

rotate决定是否旋转,比ggplot简单多了,coord_flip

```{r}

mtcars %>% rownames_to_column(var = “name”) %>% mutate(cyl = as.factor(cyl)) %>% ggdotchart( x=“name”, y=“mpg”, color = “cyl”, palette = c("#00AFBB", “#E7B800”, “#FC4E07”), sorting = “ascending”, add = “segments”, rotate=TRUE, group = “cyl”, dot.size = 6, label = round(mtcars$mpg), font.label = list(color=“white”, size=9, vjust=0.5),

ggtheme = theme_minimal()

)

```

label = round(mtcars$mpg),这是目前这个包的一个bug,必须这么做,但是呢,已经非常出色了。

"技术 系列导航

1 "技术:Poisson分布、回归Python实现 2017-12-20
2 "技术:beta系数理解 2017-12-21
3 "技术:Python List剔除重复值 2017-12-21
4 "技术:t-SNE处理高维数据可视化 2017-12-21
5 "技术:用R语言进行文件系统管理 2017-12-21
6 "技术:fct_lump分箱使用方法 2017-12-22
7 "技术:F1分数为什么可以看不平衡样本的预测能力 2017-12-27
8 "技术:Fisher的一个矩阵预算 2017-12-27
9 "技术:case_when使用方法 2017-12-28
10 "技术:Python接口函数 2017-12-28
11 "技术:fct_relevel调整对照组,批量的方案 2017-12-30
12 "技术:python中变量批量处理集成方案 2017-12-30
13 "技术:Python接口函数-中台 2018-01-03
14 "技术:使用pbd包进行debug 2018-01-03
15 "技术:R实现随机分组 2018-01-04
16 "技术:jiebaR包做文本清洗 2018-01-05
17 "技术:r_WACC使用说明 2018-01-05
18 "技术:使用switchhost安装host 2018-01-05
19 "技术:Git的下载问题 2018-01-06
20 "技术:新闻爬虫 2018-01-07
21 "技术:Scalable Data Processing in R 2018-01-08
22 "技术:使用git创建一个自己的本地仓库 2018-01-11
23 "技术:dashboard构建,来自yihui的包 2018-01-12
24 "技术:最大似然估计再理解 2018-01-12
25 "技术:itchat包提取微信好友公开数据 2018-01-13
26 "技术:do函数和biglm包 2018-01-17
27 "技术:Imputer后X少了一列 2018-01-18
28 "技术:mac连接mysql,理论上win7也可以 2018-01-19
29 "技术:t-SNE理论部分补充 2018-01-22
30 "技术:RMarkdown的使用技巧 2018-01-30
31 "技术:通过anova检验,理解R2、R_adj.2、F值 2018-01-31
32 "技术:ggridges 山峦图 学习笔记 2018-02-02
33 "技术:Tidyverse使用技巧 2018-02-02
34 "技术:XGBoost 学习笔记 2018-02-02
35 "技术:分布变离散,或者纠正skew 2018-02-02
36 "技术:rsq在R中自定义函数 2018-02-03
37 "技术:Jupyter实战 2018-02-13
38 "技术:美化与定制 2018-02-21
39 "技术:数据对比可视化指南 2018-02-22
40 "技术:功能体验 2018-02-26
41 "技术:高效数据处理 2018-02-27
42 "技术:模型优化技巧 2018-03-05
43 "技术:原理与应用 2018-03-06
44 "技术:模型与可视化 2018-03-08
45 "技术:美化与交互指南 2018-03-11
46 "技术:高效操作指南 2018-03-14
47 "技术:用法与优化技巧 2018-03-17
48 "技术:效率提升指南 2018-03-18
49 "技术:问题排查技巧 2018-03-18
50 "技术:高效操作指南 2018-03-19
51 "技术:方法与代码示例 2018-03-21
52 "技术:进阶技巧与优化 2018-03-21
53 "技术:实战示例 2018-03-22
54 "技术:效率与规范指南 2018-03-24
55 "技术:dplython包测评 2018-03-25
56 "技术:原理与实现 2018-04-02
57 "技术:原理与应用解析 2018-04-03
58 "技术:实战指南 2018-04-05
59 "技术:核心语法与函数整理 2018-04-05
60 "技术:复利计算与应用 2018-04-08
61 "技术:简单规则模型解析 2018-04-14
62 "技术:高效代码设计指南 2018-04-25
63 "技术:原理与应用学习笔记 2018-04-29
64 "技术:实战指南 2018-04-29
65 "技术:原理与应用 2018-05-01
66 "技术:表格格式化指南 2018-05-02
67 "技术:原理与应用介绍 2018-05-08
68 "技术:高效文本拼接 2018-05-11
69 "技术:方法与实践学习笔记 2018-05-12
70 "技术:方法与工具 2018-05-12
71 "技术:功能解析 2018-05-17
72 "技术:高效数据输入 2018-05-21
73 "技术:基础模型与方法 2018-05-22
74 "技术:功能与使用体验 2018-05-26
75 "技术:特征筛选学习笔记 2018-05-29
76 "技术:实战技巧 2018-05-30
77 "技术:建模思路解析 2018-06-03
78 "技术:策略与实战 2018-06-03
79 "技术:数据展示指南 2018-06-04
80 "技术:包与环境配置指南 2018-07-14
81 "技术:高效操作指南 2018-07-19
82 "技术:方法与案例解析 2018-07-24
83 "技术:统计建模学习笔记 2018-07-24
84 "技术:展示技巧与原则 2018-08-10
85 "技术:数据采集实战技巧 2018-08-21
86 "技术:指标设计学习笔记 2018-09-20
87 "技术:建模流程实战 2018-10-01
88 "技术:大规模数据探索 2018-10-20
89 "技术:文本提取与分析 2018-10-20
90 "技术:原理与R实现实战 2018-10-21
91 "技术:学习资源获取技巧 2018-10-23
92 "技术:深度学习模型实战 2018-10-24
93 "技术:实战指南 2018-10-30
94 "技术:分析与展示指南 2018-11-03
95 "技术:图片编辑与转换 2018-11-03
96 "技术:安装与使用基础学习笔记 2018-11-07
97 "技术:非结构化数据处理 2018-11-29
98 "技术:表格美化技巧 2018-12-13
99 "技术:分类数据可视化 2018-12-24
100 "技术:流程图绘制技巧 2018-12-24
101 "技术:自动化设置 2018-12-28
102 "技术:协作与版本控制 2018-12-29
103 "技术:pipeline设计 2018-12-30
104 "技术:Git历史记录清理 2018-12-31
105 "技术:AUC指标对比 2019-01-01
106 "技术:时间序列可视化 2019-01-01
107 "技术:变量命名工具指南 2019-01-02
108 "技术:网页自动化截图 2019-01-02
109 "技术:配置与优化 2019-01-03
110 "技术:原理与应用 2019-01-07
111 "技术:语法与核心概念 2019-01-14
112 "技术:R包徽章设计 2019-01-15
113 "技术:项目结构设计 2019-01-21
114 "技术:文本分类基础任务 2019-01-22
115 "技术:线性与非线性模型 2019-01-22
116 "技术:有效性验证 2019-01-27
117 "技术:评估与应用 2019-01-29
118 "技术:循环神经网络入门 2019-01-30
119 "技术:长短期记忆网络入门 2019-01-30
120 "技术:for循环示例 2019-02-03
121 "技术:基础到进阶 2019-02-06
122 "技术:查询与整合 2019-02-06
123 "技术:方法与案例 2019-02-14
124 "技术:R包高效开发指南 2019-02-20
125 "技术:解析与操作 2019-02-20
126 "技术:训练与预测 2019-02-25
127 "技术:原理与代码 2019-02-26
128 "技术:GitHub个人访问令牌(PAT)设置 2019-03-04
129 "技术:方法与工具 2019-03-07
130 "技术:文本特征提取示例 2019-03-08
131 "技术:基础任务示例 2019-03-18
132 "技术:条形图与表头设计 2019-03-20
133 "技术:连续与分类变量差异 2019-03-30
134 "技术:思路与方法 2019-04-08
135 "技术:方法与工具 2019-04-15
136 "技术:多格式读取 2019-04-16
137 "技术:方法与工具 2019-05-11
138 "技术:Git/GitHub/GitLab 2019-05-13
139 "技术:命令与操作 2019-05-19
140 "技术:协作与版本控制 2019-05-26
141 "技术:语法与实践 2019-06-28
142 "技术:功能与API 2019-07-13
143 "技术:安装与使用 2019-07-24
144 "技术:高效数据处理 2019-10-09
145 "技术:性能优化技巧 2019-10-12
146 "技术:配置与运维 2019-10-29
147 "技术:原理与经典模型 2019-12-25
148 "技术:构建到发布流程 2019-12-26
149 "技术:方法与案例 2019-12-27
150 "技术:命令与自动化 2019-12-30
151 "技术:Pandas数据处理实战指南 2020-01-19
152 "技术:特征工程之目标编码学习笔记 2020-01-20
153 "技术:文档编写与美化 2020-01-28
154 "技术:核心算法与应用 2020-01-29
155 "技术:流程图绘制技巧 2020-01-29
156 "技术:DataCamp课程笔记 2020-01-31
157 "技术:Python实用代码片段合集 2020-01-31
158 "技术:自动化构建流程 2020-02-02
159 "技术:自动化工作流配置 2020-02-04
160 "技术:高效查找代码与项目 2020-02-11
161 "技术:代码环境快速部署 2020-02-24
162 "技术:USD数据分析论文收录暨GitBook发布 2020-05-02
163 "技术:Causal Forest 2021-03-18