如何删除或不显示箱线图和小提琴图中误差线上方和下方的任何数据点?

问题描述

我正在处理一个非常大的数据集,其中包含大约 160 万个数据点。我使用小提琴图和箱线图来表示每个类别的数据(有多个类别,每个类别都有自己的一组值)。

但我面临的问题是,误差线上方有很多数据点(异常值),因为图的焦点已经丢失。

之前我认为如果我在特定值之后删除所有数据点,它可能会帮助我表示我想要显示内容。但它不起作用,因为对于每个类别,误差条范围都不同,因此,我丢失了其他类别的大部分数据。

所以,现在我正在考虑删除不显示每个类别误差线上方的数据点,无论是方框图还是小提琴图。我在 outlier.shape=NA 中引入了 geom_Boxplot,它适用于箱线图。同样,我想从小提琴图中删除所有位于箱线图中误差线上方的数据点。

以下是使用 outlier.shape=NA 之前和之后的图。 前:

enter image description here


后:

enter image description here

这是我的代码

med_violin <- data %>%
  left_join(sample_size) %>%
  mutate(myaxis = fct_reorder(paste0(Country),Diff,.fun='median')) %>%
  ggplot( aes(x=myaxis,y=Diff,fill=Country)) +
  geom_violin(width=1.5,color = "black",position = position_dodge(width=1.8),trim = TRUE) +
  geom_Boxplot(width=0.2,color="white",alpha=0.01,outlier.colour="red",outlier.size=0.1,outlier.shape = NA) +
  scale_y_continuous(breaks = c(0,25,50,75,100,125,150,525,550))+
  coord_trans(y = squash_axis(150,15)) +
  theme(axis.text.x = element_text(angle = 90,hjust = 1))+
  theme(axis.text.x = element_text(size = 8))+
  theme(legend.position ="none")+
  scale_fill_viridis(discrete = TRUE) +
  xlab("")

med_violin

如何在 genom_violin 中实现相同的功能,使其也不会在误差条上方显示数据点?

我什至试过这个:Ignore outliers in ggplot2 geom_violin

但对我不起作用。

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...