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

如何用R绘制带须线、含实验室值与MPV的非箱线图?

实现思路

1. 数据预处理:转成长格式

首先得把宽格式数据(一列实验室值、一列MPV值)转成长格式,新增一个类别变量(比如type)区分两种数值,这样才能在ggplot里统一映射样式。

示例代码:

library(tidyr)
# 假设原数据框df包含lab_value(实验室值)和mpv_value(MPV)列
df_long <- df %>%
  pivot_longer(
    cols = c(lab_value, mpv_value),
    names_to = "type",
    values_to = "result",
    names_transform = list(type = ~ifelse(.x == "lab_value", "实验室值", "MPV"))
  )

2. 核心散点图层构建

用geom_point()通过shape参数区分实心/空心点,搭配颜色映射实现需求:

  • 实验室值:用实心圆点(shape=19),指定彩色
  • MPV:用空心圆点(shape=21),填充白色保证空心效果

基础代码框架:

library(ggplot2)
ggplot(df_long, aes(x = type, y = result)) +
  # 绘制实心实验室值点
  geom_point(
    data = subset(df_long, type == "实验室值"),
    shape = 19, color = "#2ca02c", size = 3
  ) +
  # 绘制空心MPV点
  geom_point(
    data = subset(df_long, type == "MPV"),
    shape = 21, color = "#2ca02c", fill = "white", size = 3
  ) +
  # 美化标签与主题
  labs(x = "数值类型", y = "检测结果", title = "实验室值与MPV对比") +
  theme_minimal()

3. 进阶优化(按需选择)

配对样本连线

如果是每个样本对应一组实验室值和MPV,用geom_line()连接同一样本的两个点,更直观展示差异:

# 假设数据包含sample_id(样本标识)列
ggplot(df_long, aes(x = type, y = result, group = sample_id)) +
  geom_line(color = "gray", alpha = 0.5) + # 灰色半透明连接线
  geom_point(data = subset(df_long, type == "实验室值"), shape = 19, color = "#2ca02c", size = 3) +
  geom_point(data = subset(df_long, type == "MPV"), shape = 21, color = "#2ca02c", fill = "white", size = 3) +
  labs(x = "数值类型", y = "检测结果", title = "配对样本:实验室值与MPV对比") +
  theme_minimal()

叠加分布背景

如果需要展示整体分布,可在散点下方叠加箱线图/小提琴图,用alpha调整透明度避免遮挡:

ggplot(df_long, aes(x = type, y = result)) +
  geom_boxplot(width = 0.3, alpha = 0.2) + # 半透明箱线图
  geom_point(data = subset(df_long, type == "实验室值"), shape = 19, color = "#2ca02c", size = 3, position = position_jitter(width = 0.1)) +
  geom_point(data = subset(df_long, type == "MPV"), shape = 21, color = "#2ca02c", fill = "white", size = 3, position = position_jitter(width = 0.1)) +
  labs(x = "数值类型", y = "检测结果", title = "实验室值与MPV分布对比") +
  theme_minimal()

关键注意点

  • 长格式数据是ggplot灵活映射的基础,务必先完成格式转换
  • ggplot形状参数:shape=19为实心圆,shape=21为可填充的空心圆,可根据喜好替换其他形状
  • 配对数据必须指定group=样本标识,否则连接线会混乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:22:42