R语言 注解geom_boxplot中满足指定条件的点?

ghg1uchk  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(131)

假设我有一个基于ggplot()的箱形图,这个箱形图的点在上须和下须之间,如果我只想注解这些点的子集,例如,只注解对应于变量值50及以上或5及以下的点,我该怎么做?

    • 编辑**

澄清:我的意思不是注解和指出特定的点高于或低于指定的阈值,而是单独注解每个点,就像用它们各自的值来标记高于和低于阈值的点一样。因此,如果像70这样的值高于上限阈值50,我希望直接在它旁边用"70"来注解该点。

    • 编辑2**

按照评论中的建议,我遇到了这个问题:

正如你所看到的,这些彩色的点,应该与那些被stat_summary()函数识别为异常值的点相同,或者实际上不相同,有些点甚至碰到了胡须。
彩色点和箱形图如下所示:

# Function that enables individualizing boxplots
{
  Individualized_Boxplot_Quantiles <- function(x) {
    r <- quantile(x, probs = c(0.01, 0.25, 0.5, 0.75, 0.99))
    names(r) <- c("ymin", "lower", "middle", "upper", "ymax")
    r
  }
  
  Definition_of_Outliers = function(x) 
  {
    subset(x, 
           quantile(x,0.99) < x | quantile(x,0.01) > x)
  }
}
Data_Above_99th_Percentile = filter(Data,variable_of_interest > quantile(Data$variable_of_interest, probs = 0.99))

Data_Below_1st_Percentile = filter(Data,variable_of_interest < quantile(Data$variable_of_interest,probs = 0.01))
# creation of the individualized boxplots 
  stat_summary(fun.data = Individualized_Boxplot_Quantiles, 
               geom="boxplot",
               lwd = 0.1) +
  
  stat_summary(fun.y = Definition_of_Outliers, 
               geom="point",
               size = 0.5) +
geom_point(data = Data_Above_99th_Percentile,
             colour = "red",
             size = 0.5) + 
  
  geom_point(data = Data_Below_1st_Percentile,
             colour = "red",
             size = 0.5)
oxcyiej7

oxcyiej71#

我将通过传递适当的数据子集,使用不同的颜色在新的geom_point层中重叠绘制一些点,然后使用相同的子集添加文本标签。

set.seed(1)
df <- data.frame(x = 'Data', y = rnorm(1000, 26, 7))

library(ggplot2)

ggplot(df, aes(x, y)) + 
  geom_boxplot() +
  ylim(c(0, 60)) +
  geom_point(data = subset(df, y > 50 | y < 5), color = 'red') +
  geom_text(data = subset(df, y > 50 | y < 5), aes(label = round(y, 2)),
            nudge_x = 0.08)

相关问题