ggplot2_boxplot
时间:2022-07-25
本文章向大家介绍ggplot2_boxplot,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
ggplot_boxplot
sunqi
2020/8/2
概述
箱式图适用于连续变量的可视化展示,显示变量的四分位数,中位数、异常值等 同时箱式图可以预览两组之间的差异,为后续统计分析做准备
目标
- 绘制普通箱式图
- 绘制分组箱式图
- 绘制多组箱式图
- 设置展示组
主要函数
geom_boxplot()
参数:width:设置宽度 notch:是否展示缺口,缺口展示的是中位数的置信区间 color, size, linetype: 颜色、大小、线的类型 fill:填充颜色 outlier.colour, outlier.shape, outlier.size:箱式图须的设置 ## 代码
示例数据集ToothGrowth
# 载入包
rm(list=ls())
library(ggplot2)
library(patchwork)
# 设置主题
theme_set(
theme_classic() +
theme(legend.position = "top")
)
# 参数
data("ToothGrowth")
df <- ToothGrowth
# dose 分组,维生素C的剂量
# len目标变量,牙齿长度
df$dose <- as.factor(df$dose)
# 绘图
# 默认绘图
p=ggplot(df, aes(x = dose, y = len))
p1 <- p+geom_boxplot()
# 添加缺口设计
p2 <- p + geom_boxplot(notch = TRUE, fill = "lightgray")+
# 添加均值点
stat_summary(fun= mean, geom = "point",
shape = 18, size = 2.5, color = "#FC4E07")
#将图1和图2放在一起查看
p1+p2
# 对于维生素剂量也可以更改显示顺序
# 通过scale_x_discrete()
p3 <- p + geom_boxplot() +
# 只显示0.5和2
scale_x_discrete(limits=c("0.5", "2"))
# 更改分组的显示顺序为2,0.5,1
p4 <- p + geom_boxplot() +
scale_x_discrete(limits=c("2", "0.5", "1"))
p3+p4
## Warning: Removed 20 rows containing missing values (stat_boxplot).
# 更改颜色
# scale_color_manual()
# scale_fill_manual()
# 先根据分组设置颜色
p5 <- p + geom_boxplot(aes(color = dose))+
# 通过这个函数自定义颜色配置
scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
# 更改填充的颜色
p6 <- p + geom_boxplot(aes(fill = dose)) +
scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
# 对于color更改的是线的颜色,对于fill更改的是填充的颜色
p5+p6
# 多组箱式图绘制
p7 <- p +
# 这里对填充使用的supp变量
# position_dodge设置组之间的距离
geom_boxplot(aes(fill = supp), position = position_dodge(0.9) ) +
scale_fill_manual(values = c("#999999", "#E69F00"))
p7
# 分面展示
p8 <- p7 + facet_wrap(~supp)
p8
结束语
对于分面的问题还是最好不要尝试,会后悔。记得使用管道符、注释、养成好习惯。
love&peace
- 干货 | Elasticsearch 集群健康值红色终极解决方案
- Go语言interface的value.(type)使用小技巧-转
- 干货 | Elasticsearch5.X Mapping万能模板
- MySQL 5.7安装部署总结(r10笔记第77天)
- Go语言中Socket通信TCP服务端
- MySQL和Oracle的添加字段的处理差别 (r10笔记第73天)
- MySQL修改数据类型的问题总结(r10笔记第74天)
- 深究|Elasticsearch单字段支持的最大字符数?
- Go语言中Socket通信之Tcp客户端
- Oracle 12c PDB迁移及ORA-00600错误分析和解决(r10笔记第72天)
- 【Go 语言社区】epoll详解
- Oracle 12c数据库升级实战(r10笔记第70天)
- Oracle 12c升级检查问题分析(r10笔记第69天)
- 转--使用Revel(go)开发网站
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【设计模式】692- TypeScript 设计模式之发布-订阅模式
- 强网杯-upload
- 基于暗通道去雾算法
- 全套 | 人脸检测 & 人脸关键点检测 & 人脸卡通化
- 使用Jenkins Dashboard插件可视化部署
- 全面综述:图像特征提取与匹配技术
- opencv+python制作硬核七夕礼物
- opencv+python制作硬核七夕礼物
- 七夕节也要学起来,哈希哈希哈希!
- 目标检测器性能评估工具包
- istio 1.7发布
- AkShare-中国宏观-工业品出厂价格指数
- AkShare-中国宏观-采购经理人指数
- Python 为什么没有 void 关键字?
- 【特征提取+分类模型】4种常见的NLP实践思路