You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中按数值范围而非类别绘制多箱线图的实现方法

问题描述

我希望在R中绘制多箱线图,而非以x轴类别定义每个箱线图,而是用水深数值范围(0至0.6m间的20个区间)来划分。x轴展示水深区间,y轴为电导率。我已通过以下代码生成分位数断点:

x=dataset$Depth
ncells=20
breaks=quantile(x, seq, (0,1,by=1/ncells))
table(cut(x, breaks=breaks))

输出的区间频数如下:

(0.155,0.158] (0.158,0.162] (0.162,0.166] (0.166,0.168]  (0.168,0.17] 
         1116          1116          1116          1116          1116 
 (0.17,0.171] (0.171,0.173] (0.173,0.174] (0.174,0.175] (0.175,0.176] 
         1116          1117          1116          1116          1116 
(0.176,0.177] (0.177,0.179] (0.179,0.185] (0.185,0.187] (0.187,0.189] 
         1116          1116          1116          1117          1116 
(0.189,0.191] (0.191,0.194] (0.194,0.206] (0.206,0.244] (0.244,0.592] 
         1116          1116          1116          1116          1117 

我希望用这些区间定义每个箱线图的数据范围,请问是否需要将其标记为数据集的离散类别(如flow1、flow2等),还是可直接使用这些范围?优先使用ggplot2绘制,恳请解答。

解答

不需要手动将区间命名为flow1、flow2这类自定义标签,直接用cut()生成的区间类别即可,ggplot2可以直接识别这个离散型变量作为x轴分组。

步骤1:修正断点生成代码并添加区间列

你之前的quantile函数语法有误,seq的调用格式不对,正确写法是seq(0,1,by=1/ncells)。同时建议添加include.lowest=TRUE参数,确保最小的水深值能被分到第一个区间里:

library(ggplot2)

# 生成正确的分位数断点并添加区间列
dataset$depth_bin <- cut(
  dataset$Depth,
  breaks = quantile(dataset$Depth, seq(0, 1, by = 1/20)),
  include.lowest = TRUE
)

步骤2:用ggplot2绘制箱线图

直接以depth_bin作为x轴变量,电导率作为y轴变量即可:

ggplot(dataset, aes(x = depth_bin, y = 电导率列名)) +
  geom_boxplot(fill = "#4292c6", alpha = 0.7) +
  labs(
    x = "水深区间(m)",
    y = "电导率",
    title = "各水深区间电导率分布箱线图"
  ) +
  theme_minimal() +
  # 旋转x轴标签避免重叠
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

额外优化(可选)

如果觉得区间标签太长,可以用labels参数自定义更简洁的标签,比如保留两位小数:

breaks <- quantile(dataset$Depth, seq(0, 1, by = 1/20))
# 生成简洁标签,格式为"起始值-结束值"
labels <- paste0(round(breaks[-length(breaks)], 2), "-", round(breaks[-1], 2))

dataset$depth_bin <- cut(
  dataset$Depth,
  breaks = breaks,
  include.lowest = TRUE,
  labels = labels
)

再用这个自定义标签的depth_bin绘图,x轴会更清爽。

内容的提问来源于stack exchange,提问作者Elle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:43:08