利用R绘制箱线图

绘制箱线图

利用R语言绘制箱线图非常方便,主要通过 boxplot() 函数或ggplot2包实现。

注意:
箱线图中的箱子表示数据的四分位距(IQR);
箱体内的线表示中位数;
须线通常延伸到1.5倍IQR范围内的最远数据点;
超出须线的点被视为异常值。

欢迎大家在评论区留言或私信,交流学习心得或学习R的过程中遇到的问题。感谢大家的支持和关注,您的支持是我创作的最大动力。

1.利用boxplot绘制

R自带了很多数据集,例如 mtcars,我们可以用其中的 mpg(英里/加仑)数据来绘制箱线图。

  • 绘制基本的箱线图
# 查看数据前几行
head(mtcars)

# 绘制基础的箱线图
boxplot(mtcars$mpg,
        main = "汽车每加仑里程箱线图", # 标题
        ylab = "英里/加仑",           # Y轴标签
        xlab = "总样本",              # X轴标签
        col = "lightblue")            # 箱体颜色

出图效果如下:
在这里插入图片描述

  • 按分组绘制箱线图
    比较不同气缸数(cyl)汽车的每加仑里程。
# 将cyl转换为因子,以便正确分组
mtcars$cyl <- as.factor(mtcars$cyl)

# 按分组绘制
boxplot(mpg ~ cyl, 
        data = mtcars,
        main = "不同气缸数的汽车每加仑里程",
        xlab = "气缸数",
        ylab = "英里/加仑",
        col = c("lightgreen", "lightblue", "lightyellow"))

出图效果如下:
在这里插入图片描述

2.利用ggplot2绘制

首先安装并加载包

install.packages("ggplot2")  # 如果尚未安装
library(ggplot2)
  • 基础箱线图
ggplot(mtcars, aes(x = cyl, y = mpg)) +
  geom_boxplot(fill = "lightblue", alpha = 0.7) +  # alpha控制透明度
  labs(title = "不同气缸数的汽车每加仑里程",
       x = "气缸数",
       y = "英里/加仑") +
  theme_minimal()  # 使用简洁主题

出图效果如下:
在这里插入图片描述

  • 添加数据点(抖动点)
    为了显示原始数据的分布,可以在箱线图上叠加数据点。
ggplot(mtcars, aes(x = cyl, y = mpg)) +
  geom_boxplot(fill = "lightblue", outlier.colour = "red") +  # 异常点标为红色
  geom_jitter(width = 0.2, alpha = 0.6, color = "blue") +     # 添加抖动点
  labs(title = "箱线图与数据点",
       x = "气缸数",
       y = "英里/加仑") +
  theme_classic()

出图效果如下:
在这里插入图片描述

3.其他

  • 水平箱线图

只需在 boxplot() 中添加 horizontal = TRUE 参数,或在 ggplot2 中使用 coord_flip()。

# 基础方法
boxplot(mpg ~ cyl, data = mtcars, horizontal = TRUE)

# ggplot2方法
ggplot(mtcars, aes(x = cyl, y = mpg)) +
  geom_boxplot(fill = "lightcoral") +
  coord_flip() +  # 坐标轴翻转
  labs(title = "水平箱线图")

出图效果如下:
在这里插入图片描述
在这里插入图片描述

  • 自定义
    自定义颜色和外观
ggplot(mtcars, aes(x = cyl, y = mpg, fill = cyl)) +  # 按cyl填充颜色
  geom_boxplot(alpha = 0.8, 
               outlier.shape = 16,    # 异常点形状
               outlier.size = 2,      # 异常点大小
               outlier.color = "red") +
  scale_fill_brewer(palette = "Set2") +  # 使用ColorBrewer调色板
  labs(title = "自定义颜色的箱线图") +
  theme_bw() +  # 黑白主题
  theme(legend.position = "none")  # 隐藏图例

出图效果如下:
在这里插入图片描述

  • 不显示异常值的箱线图
boxplot(mpg ~ cyl, data = mtcars, outline = FALSE)  # outline = FALSE

# 在ggplot2中
ggplot(mtcars, aes(x = cyl, y = mpg)) +
  geom_boxplot(fill = "lightblue", outlier.shape = NA)  # outlier.shape = NA

出图效果如下:
在这里插入图片描述在这里插入图片描述

※※大家在使用的时候遇到任何问题欢迎留言,您的支持是我创作的最大动力。※※

### 高级箱线图创建方法 #### 使用 `ggplot2` 创建高级箱线图 为了实现更复杂的视觉效果,可以利用 `ggplot2` 包来构建具有额外特征的箱形图。这仅限于基本图形展示,还包括添加辅助元素如轴须图(rug plots),并为这些轴须标记具体数值标签。 ```r library(ggplot2) # 构建数据框用于绘图 df <- data.frame( group = factor(rep(c('A', 'B'), each=7)), value = c(sample(1:100, 7), sample(50:150, 7)) ) p <- ggplot(df, aes(x=group, y=value)) + geom_boxplot(fill="lightblue", color="black") + # 绘制基础箱线图 theme_minimal() + labs(title="Advanced Box Plot Example", subtitle="With Rug Plots and Labels", caption="Source: Custom Data") # 添加轴须图 (rug plot) p <- p + geom_rug(aes(color=(value>median(value))), sides='b') # 显示每个点的具体位置及其对应的值作为文本标注 p <- p + geom_text(data=df[df$value > quantile(df$value,.75),], aes(label=paste("ID:", rownames(df)[which(df$value > quantile(df$value,.75))])), vjust=-0.5) print(p) ``` 此代码片段展示了如何通过组合同几何对象(`geom_`)函数来自定义箱线图外观[^1]。特别是加入了颜色区分异常值、显示高百分位数以上的观测点标识等功能,使得图表更加直观易懂。 对于最佳实践方面,在设计复杂度较高的统计图形时应考虑: - **清晰性**:确保所有附加组件会干扰主要信息传达; - **一致性**:保持配色方案和谐统一; - **交互支持**:如果可能的话引入动态特性以便探索更多细节;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小火柴123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值