在 ggplot 中包含极端异常值的指示
Include indication of extreme outliers in ggplot
我的数据集中有一些非常非常少的异常值,使得箱线图难以阅读:
library(ggplot2)
mtcars$mpg[1] <- 60
p <- ggplot(mtcars, aes(factor(cyl), mpg))
p + geom_boxplot()
因此,我想指出这样的极端异常值:
知道如何在 ggplot2
中执行此操作吗?转换轴对我来说不是一个选项...
这是一个开始:
library("ggplot2")
mtcars$mpg[1:2] <- c(50,60)
p <- ggplot(mtcars, aes(factor(cyl), mpg))
p + geom_boxplot()
定义最大值:
maxval <- 40
使用dplyr
(也可以在 base R 或 plyr
中完成)提取异常值并将文本字符串放在一起:
library("dplyr")
dd <- mtcars %>% filter(mpg>maxval) %>%
group_by(cyl) %>%
summarise(outlier_txt=paste(mpg,collapse=","))
设置最大 y 值并添加箭头加标签:
library("grid") # needed for arrow() function
p2 <- p + geom_boxplot() +
scale_y_continuous(limits=c(min(mtcars$mpg),maxval))+
geom_text(data=dd,aes(y=maxval,label=outlier_txt),
size=3,vjust=1.5,hjust=-0.5)+
geom_segment(data=dd,aes(y=maxval*0.95,yend=maxval,
xend=factor(cyl)),
arrow = arrow(length = unit(0.1,"cm")))
p2
我的数据集中有一些非常非常少的异常值,使得箱线图难以阅读:
library(ggplot2)
mtcars$mpg[1] <- 60
p <- ggplot(mtcars, aes(factor(cyl), mpg))
p + geom_boxplot()
因此,我想指出这样的极端异常值:
知道如何在 ggplot2
中执行此操作吗?转换轴对我来说不是一个选项...
这是一个开始:
library("ggplot2")
mtcars$mpg[1:2] <- c(50,60)
p <- ggplot(mtcars, aes(factor(cyl), mpg))
p + geom_boxplot()
定义最大值:
maxval <- 40
使用dplyr
(也可以在 base R 或 plyr
中完成)提取异常值并将文本字符串放在一起:
library("dplyr")
dd <- mtcars %>% filter(mpg>maxval) %>%
group_by(cyl) %>%
summarise(outlier_txt=paste(mpg,collapse=","))
设置最大 y 值并添加箭头加标签:
library("grid") # needed for arrow() function
p2 <- p + geom_boxplot() +
scale_y_continuous(limits=c(min(mtcars$mpg),maxval))+
geom_text(data=dd,aes(y=maxval,label=outlier_txt),
size=3,vjust=1.5,hjust=-0.5)+
geom_segment(data=dd,aes(y=maxval*0.95,yend=maxval,
xend=factor(cyl)),
arrow = arrow(length = unit(0.1,"cm")))
p2