当前位置: 首页 > article >正文

【R语言编程绘图-箱线图】

基本箱线图绘制

使用ggplot2绘制箱线图的核心函数是geom_boxplot()。以下是一个基础示例,展示如何用iris数据集绘制不同物种(Species)的萼片长度(Sepal.Length)分布:

library(ggplot2)
ggplot(iris, aes(x = Species, y = Sepal.Length)) + geom_boxplot()

颜色与填充控制

通过fillcolor参数可分别控制箱线图内部填充色和边框颜色:

ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) + geom_boxplot(color = "black", alpha = 0.7)
  • alpha参数调整透明度(0-1)
  • 颜色支持Hex格式(如#FF5733)或R颜色名称

异常值样式调整

箱线图的异常值(outliers)可通过以下参数定制:

geom_boxplot(outlier.color = "red",       # 异常点颜色outlier.shape = 19,          # 点形状编号outlier.size = 3,            # 点大小outlier.alpha = 0.6          # 透明度
)

宽度与位置调整

width参数控制箱体宽度,position调整分组位置:

ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) + geom_boxplot(width = 0.5, position = position_dodge(0.8))

分组箱线图

当需要按两个分类变量分组时,使用交互变量或分面:

# 方法1:dodge分组
ggplot(mpg, aes(x = class, y = hwy, fill = factor(cyl))) + geom_boxplot(position = position_dodge(preserve = "single"))# 方法2:分面
ggplot(mpg, aes(x = class, y = hwy)) + geom_boxplot() + facet_wrap(~cyl)

统计信息显示

可通过stat_summary()叠加显示均值等统计量:

ggplot(iris, aes(x = Species, y = Sepal.Length)) + geom_boxplot() +stat_summary(fun = mean, geom = "point", shape = 18, size = 3, color = "red")

水平箱线图

交换x/y映射即可创建水平箱线图:

ggplot(iris, aes(y = Species, x = Sepal.Length)) + geom_boxplot()

在这里插入图片描述

完整参数列表

geom_boxplot()支持的完整美学参数(aesthetics)包括:

  • x:分类变量(必需)
  • y:连续变量(必需)
  • lower/upper:自定义箱体范围
  • middle:自定义中位数线
  • ymin/ymax:自定义须线范围
  • group:强制分组变量
  • weight:加权箱线图

主题定制

通过theme()函数可精细调整标题、坐标轴等元素:

ggplot(iris, aes(x = Species, y = Sepal.Length)) + geom_boxplot() + labs(title = "鸢尾花萼片长度分布") + theme_minimal() +theme(axis.text.x = element_text(angle = 45, hjust = 1))
# 加载必要的库
library(ggplot2)# 创建示例数据
df <- data.frame(group = rep(c("A", "B", "C"), each = 100),value = c(rnorm(150, mean = 0), rnorm(60, mean = 1), rnorm(400, mean = 2))
)# 绘制箱线图
p <- ggplot(df, aes(x = group, y = value)) +geom_boxplot(width = 0.6, fill = "white", color = "black") +  # 使用白色填充,黑色边框labs(title = "Boxplot of Values by Group",  # 标题x = "Group",  # X轴标签y = "Value") +  # Y轴标签theme_minimal() +  # 使用简洁主题theme(plot.title = element_text(size = 16, face = "bold", hjust = 0.5),  # 标题样式axis.title = element_text(size = 14, face = "bold"),  # 轴标题样式axis.text = element_text(size = 12),  # 轴刻度标签样式legend.position = "none",axis.line = element_line(color = "black"))  
# 显示图像
print(p)# 保存为高分辨率图像
ggsave("boxplot.png", plot = p, width = 8, height = 6, dpi = 300)

在这里插入图片描述

http://www.lryc.cn/news/2387852.html

相关文章:

  • 【elasticsearch 7 或8 的安装及配置SSL 操作指引】
  • GitHub 趋势日报 (2025年05月23日)
  • MongoDB索引:原理、实践与优化指南
  • SQL实战之索引优化(单表、双表、三表、索引失效)
  • [7-1] ADC模数转换器 江协科技学习笔记(14个知识点)
  • SSM整合:Spring+SpringMVC+MyBatis完美融合实战指南
  • Spring Boot分页查询进阶:整合Spring Data REST实现高效数据导航
  • 阿里云 Serverless 助力海牙湾构建弹性、高效、智能的 AI 数字化平台
  • 升级node@22后运行npm install报错 distutils not found
  • 一个开源的多播放源自动采集在线影视网站
  • 【PhysUnits】10 减一操作(sub1.rs)
  • 深度检测与动态透明度控制 - 基于Babylon.js的遮挡检测实现解析
  • Linux下使用socat将TCP服务转为虚拟串口设备
  • docker push 报错 denied: requested access to the resource is denied
  • epub→pdf | which 在线转换??好用!!
  • PBX、IP PBX、FXO 、FXS 、VOIP、SIP 的概念解析以及关系
  • MySQL数据高效集成到金蝶云星空的技术分享
  • git 命令之-git cherry-pick
  • 如何在STM32CubeMX下为STM32工程配置调试打印功能
  • Linux系统 - 基本概念
  • kerberos在无痕浏览器 获取用户信息失败 如何判断是否无痕浏览器
  • 在h5端实现录音发送功能(兼容内嵌微信小程序) recorder-core
  • PDF电子发票数据提取至Excel
  • 【身份证识别表格】把大量手机拍摄的身份证信息转换成EXCEL表格的数据,拍的身份证照片转成excel表格保存,基于WPF和腾讯OCR的实现方案
  • FPGA高速接口 mipi lvds cameralink hdml 千兆网 sdi
  • Linux路径解析指南:逻辑路径 vs 实际路径详解
  • Azure 公有云基础架构与核心服务:从基础到实践指南
  • 【运维_日常报错解决方案_docker系列】一、docker系统不起来
  • C# 数组与字符串:全面解析与应用实践
  • 前端vue中使用signalr