R 当存在异常值时,在ggplot箱线图上标记胡须
我想在ggplot的盒形图中标记胡须的末端,而不是最小值和最大值,它们在我的数据中通常是异常值 我试过使用这里的代码:,但正如您从因子(cyl)=8(蓝色)的输出中看到的,绝对最小值和最大值被标记,而不是胡须结束的点 这是输出: 在给出的示例中,我希望标记因子(cyl)上的胡须,而不是异常值R 当存在异常值时,在ggplot箱线图上标记胡须,r,ggplot2,boxplot,outliers,quantile,R,Ggplot2,Boxplot,Outliers,Quantile,我想在ggplot的盒形图中标记胡须的末端,而不是最小值和最大值,它们在我的数据中通常是异常值 我试过使用这里的代码:,但正如您从因子(cyl)=8(蓝色)的输出中看到的,绝对最小值和最大值被标记,而不是胡须结束的点 这是输出: 在给出的示例中,我希望标记因子(cyl)上的胡须,而不是异常值 感谢大家提供的帮助。箱线图使用箱线图.stats。您可以在统计摘要中直接使用此项: ggplot(mtcars, aes(x=factor(cyl), y=mpg, fill=factor(cyl))) +
感谢大家提供的帮助。箱线图使用
箱线图.stats
。您可以在统计摘要中直接使用此项:
ggplot(mtcars, aes(x=factor(cyl), y=mpg, fill=factor(cyl))) +
geom_boxplot(width=0.6) +
stat_summary(
aes(label=sprintf("%1.1f", ..y..), color=factor(cyl)),
geom="text",
fun.y = function(y) boxplot.stats(y)$stats,
position=position_nudge(x=0.33),
size=3.5) +
theme_bw()
如果您只需要胡须,只需使用boxplot.stats(y)$stats[c(1,5)]
即可。欢迎
有点像tm,我不明白为什么8个气缸坏了
library(tidyverse)
outlier_range <- function(x) {
first_quantile <- quantile(x,0.25)
third_quantile <- quantile(x,0.75)
iqr <- IQR(x)
outlier_lower <- max(min(x), first_quantile - 1.5 * iqr)
outlier_higher <- min(max(x), third_quantile + 1.5 * iqr)
return(c(outlier_lower, outlier_higher))
}
ggplot(mtcars) +
aes(x=factor(cyl), y=mpg, fill=factor(cyl)) +
geom_boxplot(width=0.6) +
theme_bw() +
stat_summary(geom="text", fun.y=outlier_range,
aes(label=sprintf("%1.1f", ..y..), color=factor(cyl)),
position=position_nudge(x=0.33), size=3.5)
library(tidyverse)
outlier_range <- function(x) {
first_quantile <- quantile(x,0.25)
third_quantile <- quantile(x,0.75)
iqr <- IQR(x)
outlier_lower <- max(min(x), first_quantile - 1.5 * iqr)
outlier_higher <- min(max(x), third_quantile + 1.5 * iqr)
return(c(outlier_lower, outlier_higher))
}
ggplot(mtcars) +
aes(x=factor(cyl), y=mpg, fill=factor(cyl)) +
geom_boxplot(width=0.6) +
theme_bw() +
stat_summary(geom="text", fun.y=outlier_range,
aes(label=sprintf("%1.1f", ..y..), color=factor(cyl)),
position=position_nudge(x=0.33), size=3.5)
ggplot(mtcars, aes(x=factor(cyl), y=mpg, fill=factor(cyl))) +
geom_boxplot(width=0.6) +
stat_summary(
aes(label=sprintf("%1.1f", ..y..), color=factor(cyl)),
geom="text",
fun.y = function(y) boxplot.stats(y)$stats[c(1,5)],
position=position_nudge(x=0.33),
size=3.5) +
theme_bw()