用与 Boxplots 相同的颜色填充异常值 在 ggplot R 中填充颜色?
Fill outliers with same color as Boxplots Fill color in ggplot R?
我希望离群值以与箱线图填充颜色(不是轮廓)相同的颜色出现。我尝试了不同的方法,其中 none 行得通。非常感谢任何帮助。
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
p <- ggplot(ToothGrowth, aes(x=dose, y=len))+
geom_boxplot(width=0.3,aes(fill=dose),outlier.colour = NA)+
geom_point()+
scale_fill_manual(values=c("firebrick", "royalblue","yellow"))
p
我们可以将 outlier.shape
设置为“21”,这样它将继承填充颜色并绘制箱线图之前的点:
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
ggplot(ToothGrowth, aes(x=dose, y=len))+
geom_point()+
geom_boxplot(width=0.3,aes(fill=dose),outlier.shape = 21)+
scale_fill_manual(values=c("firebrick", "royalblue","yellow"))
它在图片中几乎不可见,但剂量为 0.5 时的离群值是红色的。
编辑
还要在框内显示点:
is_outlier <- function(x) {
return(x < quantile(x, 0.25) - 1.5 * IQR(x) | x > quantile(x, 0.75) + 1.5 * IQR(x))
}
ToothGrowth %>%
group_by(dose) %>%
mutate(outlier = ifelse(is_outlier(len), as.numeric(NA), as.numeric(len))) %>%
ggplot(aes(x=dose, y=len))+
geom_boxplot(width=0.3,aes(fill=dose),outlier.shape = 21)+
geom_point(aes(x = dose, y = outlier))+
scale_fill_manual(values=c("firebrick", "royalblue","yellow"))
我希望离群值以与箱线图填充颜色(不是轮廓)相同的颜色出现。我尝试了不同的方法,其中 none 行得通。非常感谢任何帮助。
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
p <- ggplot(ToothGrowth, aes(x=dose, y=len))+
geom_boxplot(width=0.3,aes(fill=dose),outlier.colour = NA)+
geom_point()+
scale_fill_manual(values=c("firebrick", "royalblue","yellow"))
p
我们可以将 outlier.shape
设置为“21”,这样它将继承填充颜色并绘制箱线图之前的点:
ToothGrowth$dose <- as.factor(ToothGrowth$dose)
ggplot(ToothGrowth, aes(x=dose, y=len))+
geom_point()+
geom_boxplot(width=0.3,aes(fill=dose),outlier.shape = 21)+
scale_fill_manual(values=c("firebrick", "royalblue","yellow"))
编辑 还要在框内显示点:
is_outlier <- function(x) {
return(x < quantile(x, 0.25) - 1.5 * IQR(x) | x > quantile(x, 0.75) + 1.5 * IQR(x))
}
ToothGrowth %>%
group_by(dose) %>%
mutate(outlier = ifelse(is_outlier(len), as.numeric(NA), as.numeric(len))) %>%
ggplot(aes(x=dose, y=len))+
geom_boxplot(width=0.3,aes(fill=dose),outlier.shape = 21)+
geom_point(aes(x = dose, y = outlier))+
scale_fill_manual(values=c("firebrick", "royalblue","yellow"))