繁体   English   中英

从盒子中移除异常值 plot

[英]Removing outliers from a box plot

我尝试从我的 ggplot2 箱线图中删除离群值,但它似乎不起作用。 我究竟做错了什么?

box_plot_osmo <- ggplot() + 
  geom_boxplot(data = recircdf, mapping = aes(x = "RecircAlive", y = BeforeOsmolality)) +
  geom_boxplot(data = recircdf, mapping = aes(x = "RecircDead", y = AfterDeathOsmolality, color = "blue")) +
  geom_boxplot(data = freezerdf, mapping = aes(x = "FreezerDead", y = AfterDeathOsmolality, color = "red")) + 
  geom_hline(mapping = aes(yintercept = 780, color = "green")) + 
  geom_boxplot(data = freezerdf, mapping = aes(x = "FreezerAlive", y = DateRemovedOsmolality, color = "pink")) + 
  theme_bw() + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) 

box_plot_osmo + geom_boxplot(outlier.shape = NA)

您应该在每个geom_boxplot命令中提及outlier.shape=NA以删除异常值。 我将使用我自己创建的可重现示例数据来展示这一点。 您可以使用以下代码:

首先不删除异常值:

library(tidyverse)
recircdf <- data.frame(RecircAlive = c("A", "A", "A", "A", "A", "A", "A"),
                       RecircDead = c("B" , "B", "B", "B", "B", "B", "B"),
                       BeforeOsmolality = c(0,100,200,300,200,300,700),
                       AfterDeathOsmolality = c(0,100,100,300,200,400,750))

freezerdf <- data.frame(FreezerAlive = c("A", "A", "A", "A", "A", "A", "A"),
                        FreezerDead = c("B" , "B", "B", "B", "B", "B", "B"),
                        DateRemovedOsmolality = c(0,100,200,300,200,300,800),
                        AfterDeathOsmolality = c(0,1,200,300,400,600,800))

box_plot_osmo <- ggplot() + 
  geom_boxplot(data = recircdf, mapping = aes(x = "RecircAlive", y = BeforeOsmolality)) +
  geom_boxplot(data = recircdf, mapping = aes(x = "RecircDead", y = AfterDeathOsmolality, color = "blue")) +
  geom_boxplot(data = freezerdf, mapping = aes(x = "FreezerDead", y = AfterDeathOsmolality, color = "red")) + 
  geom_hline(mapping = aes(yintercept = 780, color = "green")) + 
  geom_boxplot(data = freezerdf, mapping = aes(x = "FreezerAlive", y = DateRemovedOsmolality, color = "pink")) + 
  theme_bw() + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) 

box_plot_osmo 

Output:

在此处输入图像描述

接下来是outlier.shape=NA

box_plot_osmo <- ggplot() + 
  geom_boxplot(data = recircdf, mapping = aes(x = "RecircAlive", y = BeforeOsmolality), outlier.shape = NA) +
  geom_boxplot(data = recircdf, mapping = aes(x = "RecircDead", y = AfterDeathOsmolality, color = "blue"), outlier.shape = NA) +
  geom_boxplot(data = freezerdf, mapping = aes(x = "FreezerDead", y = AfterDeathOsmolality, color = "red"), outlier.shape = NA) + 
  geom_hline(mapping = aes(yintercept = 780, color = "green")) + 
  geom_boxplot(data = freezerdf, mapping = aes(x = "FreezerAlive", y = DateRemovedOsmolality, color = "pink"), outlier.shape = NA) + 
  theme_bw() + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) 

box_plot_osmo

Output:

在此处输入图像描述

如您所见,异常值现在已被删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM