是否有一个R函数将ggplot中的异常点替换为每个级别的参与者数量?

是否有一个R函数将ggplot中的异常点替换为每个级别的参与者数量?,r,ggplot2,boxplot,outliers,R,Ggplot2,Boxplot,Outliers,我正在绘制GGPLOT(附于此处)。我想删除每个级别上有多少参与者的异常黑点。我知道outlier.shape=NA将删除异常值,但我如何添加相同级别的参与者数量。在这一点上,我保持代码非常简单,因为一旦这个查询得到解决,我将添加标签和标题 比如说,, a) 上部箱线图,而不是4个离群点,我想添加数字“55,67,89,90” b) 下面的方框图,而不是4个离群点,我想添加数字“34,56,34,23” 我的代码如下: ggplot(dist,aes(x=治疗,y=结果))+geom_boxpl

我正在绘制GGPLOT(附于此处)。我想删除每个级别上有多少参与者的异常黑点。我知道outlier.shape=NA将删除异常值,但我如何添加相同级别的参与者数量。在这一点上,我保持代码非常简单,因为一旦这个查询得到解决,我将添加标签和标题

比如说,, a) 上部箱线图,而不是4个离群点,我想添加数字“55,67,89,90” b) 下面的方框图,而不是4个离群点,我想添加数字“34,56,34,23”

我的代码如下:

ggplot(dist,aes(x=治疗,y=结果))+geom_boxplot()+ylim(0,24)+theme_void()+coord_flip()


您可以添加一个文本字段,其中包含一个有条件的
ifelse()
,以添加异常值的实际值
geom_文本(aes(label=ifelse((y>'some threshold value'),y,”))

如果低于阈值,则将其设置为“无”,当y值超过离群值阈值时,将其设置为
y


您还可以使用
paste()
函数添加一些带有值的文本。

您可以添加一个文本字段,其中包含一个条件
ifelse()
,以添加异常值的实际值
geom_文本(aes(label=ifelse((y>'some threshold value'),y,”))

如果低于阈值,则将其设置为“无”,当y值超过离群值阈值时,将其设置为
y


您还可以使用
paste()
函数添加一些带有值的文本。

一种解决方案是先定义异常值,然后使用透明度

在mpg数据集上对其进行Tyr

library(ggplot2)
library(dplyr)
data(mpg)

mpg %>%
  group_by(drv) %>%
  mutate(outlier = as.numeric(  # so ggplot doesn't complain about alpha being discrete
    !between(cty, 
            quantile(cty)[2] - 1.5*IQR(cty),
            quantile(cty)[4] + 1.5*IQR(cty)))) %>% 
  ggplot(aes(drv, cty, label=cty)) + 
  geom_boxplot(outlier.shape = NA) +
  geom_text(aes(alpha=outlier), show.legend=FALSE) +
  scale_alpha_continuous(range = c(0, 1))


这里的标签是cty变量,但您可以将其替换为另一个表示您要查找的数据(参与者数量)。

一个解决方案是首先定义异常值,然后使用透明度

在mpg数据集上对其进行Tyr

library(ggplot2)
library(dplyr)
data(mpg)

mpg %>%
  group_by(drv) %>%
  mutate(outlier = as.numeric(  # so ggplot doesn't complain about alpha being discrete
    !between(cty, 
            quantile(cty)[2] - 1.5*IQR(cty),
            quantile(cty)[4] + 1.5*IQR(cty)))) %>% 
  ggplot(aes(drv, cty, label=cty)) + 
  geom_boxplot(outlier.shape = NA) +
  geom_text(aes(alpha=outlier), show.legend=FALSE) +
  scale_alpha_continuous(range = c(0, 1))


这里的标签是cty变量,但您可以用另一个表示您要查找的数据(参与者数量)的变量替换它.

如果您包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案,那么就更容易帮助您。您可能需要在
ggplot
外部确定异常值,然后添加带有
geom_text
的内容。有人可以像我给出的示例那样添加代码吗我需要用数字来代替离群点吗?上部箱线图上有4个数字,下部箱线图上有4个数字。如果您包含一个简单的示例输入和所需输出,可用于测试和验证可能的解决方案,则更容易帮助您。您可能需要在
ggplot
外部确定异常值,然后添加带有
geom\u text
的内容。有人能帮您吗请添加代码,因为我已经给出了示例,我需要哪些数字来代替离群点?上部箱线图上有4个数字,下部箱线图上有4个数字。谢谢您的回复。我不想将y轴编号添加到异常点。我想添加手册编号(在我的例子中是参与者的编号)。我以前看过这篇文章,但对我的情况没什么用处。那就用它来代替吧。只要它在数据集中,代码就可以工作。谢谢你的回复。我不想将y轴编号添加到异常点。我想添加手册编号(在我的例子中是参与者的编号)。我以前看过这篇文章,但对我的情况没什么用处。那就用它来代替吧。只要它在数据集中,代码就可以工作。您好,谢谢您的回复。我明白你的意思,但我想为我的上部和下部箱线图添加两组独立的数字。你能帮我精确地编码geom_文本吗?我已经上传了问题中的代码和示例编号。要想做到这一点,最简单的方法是在数据中创建另一列,其中的值将与异常值一起绘制,然后,如果
y>threshold
引用了
新列
,而不是上面包含的
y
列I,并且它可能大于v1,也可能小于v1,那么您可以使用并包含上下RHELLO,谢谢您的回复。我明白你的意思,但我想为我的上部和下部箱线图添加两组独立的数字。你能帮我精确地编码geom_文本吗?我已经上传了问题中的代码和示例编号。要想做到这一点,最简单的方法是在数据中创建另一列,其中的值将与异常值一起绘制,然后,如果
y>threshold
引用了
新列
,而不是上面包含的
y
列I,并且它可能大于v1,也可能小于v1,则可以使用和来包含上下两列