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

ggplot2箱线图添加3条参考线正常,加2条不显示是什么原因?

问题原因

你构造参考线数据集时列的循环填充逻辑出现了错位:

  • 3条参考线时,参考值共有3个,x向量长度为6(每2个点对应1条线),R自动循环填充短列后,每个参考值对应的两个点的x刚好是-Inf和Inf,可以连成水平线
  • 2条参考线时,参考值共有2个,x向量长度为4,循环填充后每个参考值对应的两个点的x都是相同的(要么都是-Inf、要么都是Inf),两个点完全重合自然画不出线。

修正方法

你只需要调整参考线数据集的构造逻辑,让同一条参考线的y值和分类标签明确重复2次即可:

ex_double_plot <- function(data){
  
  # 修正后的参考线数据集,同一条线的y和标签重复2次
  References <- data.frame( x = c(-Inf, Inf, -Inf, Inf), 
                            y = c(60, 60, 40, 40), 
                            References = factor(c("High", "High", "Low", "Low")))
  ggplot(data, aes(x = event, y = x)) + 
    geom_boxplot(outlier.shape = NA) +
    geom_jitter(alpha=0.6) +
    geom_line(aes( x, y, color = References), References) +
    scale_color_manual(values=c("red", "red"))
}

ex_double_plot(ex)

更优方案

画水平参考线无需手动构造连线数据集,直接使用geom_hline更简洁,也不会出现上述错位问题:

ex_double_plot_simple <- function(data){
  ggplot(data, aes(x = event, y = x)) + 
    geom_boxplot(outlier.shape = NA) +
    geom_jitter(alpha=0.6) +
    # 直接添加两条水平参考线
    geom_hline(yintercept = c(60,40), color="red")
}

ex_double_plot_simple(ex)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:54:05