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

如何在ggplot2的geom_segment线段中添加带双斜线的中断缺口

实现治疗线段中断效果的方案

实现思路

  • 将原单条治疗线段拆分为前后两段,在期望添加缺口的位置(如线段中点)预留固定宽度的空白间隙
  • 新增独立图层在间隙位置绘制坐标轴常用的双斜线中断样式,视觉上实现线段中断效果

具体实现代码

第一步:数据预处理

先对原数据集做处理,拆分线段、计算中断位置:

library(dplyr)
# 设定缺口宽度(单位:天,可根据需求调整)
gap_width <- 2
half_gap <- gap_width / 2

# 预处理数据:拆分线段,计算中断位置
data_processed <- data %>%
  mutate(
    # 计算原线段中点
    mid_point = (start + stop) / 2,
    # 前半段终点
    seg1_end = mid_point - half_gap,
    # 后半段起点
    seg2_start = mid_point + half_gap
  )

第二步:修改绘图代码

library(ggplot2)

colors <- c("X" = "dodgerblue3", 
            "Y" = "red2",
            "Death" = "black") 

event_symbols <- c("X" = "\u25CF",
                   "Y" = "\u25CF", 
                   "Death" = "\u2020") 

five_day_lines <- seq(0, 90, 5)
day_lines <- 1:90
day_lines <- day_lines[!day_lines %in% five_day_lines]

data_processed$id <- factor(data_processed$id, levels = data_processed$id[order(data_processed$time_to_event, decreasing = T)])

ggplot(data = data_processed) +
  
  geom_hline(yintercept = five_day_lines, color = "grey", alpha = .35) +
  geom_hline(yintercept = day_lines, color = "grey", alpha = .25) +
  
  # 绘制前半段治疗线段
  geom_segment(aes(x = id, xend = id, y = start, yend = seg1_end), color = "dimgray", size = 1) +
  # 绘制后半段治疗线段
  geom_segment(aes(x = id, xend = id, y = seg2_start, yend = stop), color = "dimgray", size = 1) +
  # 绘制中断双斜线,可替换为你需要的其他中断符号
  geom_text(aes(x = id, y = mid_point, label = "//"), color = "dimgray", size = 3, angle = 30) +
  
  geom_point(aes(x = id, y = time_to_event, shape = event, color = event), size = 3) +
  
  scale_y_continuous(limits = c(0,90), breaks = c(seq(0, 90, 5)), name = "Days after study inclusion") + 
  scale_x_discrete(name = "ID") +
  coord_flip() +
  scale_color_manual(values = colors, breaks = c()) +
  scale_shape_manual(values = event_symbols, breaks = c("X", "Y", "Death"),
                     guide = guide_legend(override.aes = list(color = c("dodgerblue3", "red2", "black")))) +
  theme(legend.position = "bottom", 
        legend.title = element_text(size=12, face="bold"),
        panel.background = element_blank(),
        legend.background = element_blank()) +
  labs(color="Medication", shape="Event type")

参数调整说明

  • 可以修改gap_width调整缺口的宽度,适配不同的图表缩放比例
  • 可以修改geom_text的angle参数调整双斜线的倾斜角度,size参数调整符号大小
  • 如果需要更换中断样式,只需要替换geom_text的label参数内容即可,比如改为单斜线、或者自定义的Unicode符号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 07:09:04