如何防止ggplot2将某个点视为异常值

时间:2017-08-25 12:41:21

标签: r ggplot2

我有一个包含三列的数据框,即膜,舞台和处理。我想根据阶段和处理创建一个膜盒图。我使用以下代码生成boxplot:

library(ggplot2)
ggplot(data, aes(x=Stage, y=Membrane, colour=Stage)) + 
  geom_boxplot() + 
  labs(title="Membrane localization under different treatments", 
       y="Membrane Intensity") +
       facet_grid(. ~ Treatment)

给了我这张图:

正如您所看到的,对于最左边的情节,顶部有许多异常值。我想盒子图中包含那些异常值 - 即我希望ggplot2考虑那些点正常点,而不是异常值。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

如果您希望扩展普通boxplot胡须的范围,可以更改coef参数。在geom_boxplot的文档中,它被定义为:

  

胡须的长度是IQR的倍数。默认为1.5

将其更改为coef = <some number larger than 1.5>会延长胡须和&amp;删除相应的异常值。例如:

ggplot(data, aes(x=Stage, y=Membrane, colour=Stage)) + 
  geom_boxplot(coef = 5) + 
  labs(title="Membrane localization under different treatments", 
       y="Membrane Intensity") +
       facet_grid(. ~ Treatment)

请注意,如果这是您想要的,那么您最好注释您的情节,以便您的观众了解这一变化。

如果您只想隐藏异常值,请使用P_Sta的答案。

答案 1 :(得分:0)

尝试使用:

library(ggplot2)
ggplot(data, aes(x=Stage, y=Membrane, colour=Stage)) + 
  geom_boxplot(outlier.shape = NA) + 
  labs(title="Membrane localization under different treatments", 
       y="Membrane Intensity") +
       facet_grid(. ~ Treatment)