gpt4 book ai didi

r - geom_boxplot,如何根据组专门为异常值着色并保持黑色?

转载 作者:行者123 更新时间:2023-12-02 08:00:48 26 4
gpt4 key购买 nike

例如,

ggplot(mpg, aes(class, hwy)) + geom_boxplot(
outlier.colour = "black",
outlier.shape = 24,
outlier.fill = "red",
outlier.size = 3
)

根据这个例子,我知道对于 class compact,所有异常值都来自 volkswagon 或 toyota

mpg[mpg$class == "compact" & mpg$hwy > 35, ]

因此,与其不分青红皂白地将所有异常值标记为红色,我只想让制造商对异常值进行颜色编码?我这可能吗?我尝试了类似 outlier.fill = factor (mpg$manufacturer) 但失败了。
enter image description here

编辑:这不是 Coloring boxplot outlier points in ggplot2? 的副本因为我需要的实际上是相反的 1st) 按颜色进行颜色编码,而不仅仅是颜色 2nd) 我不想匹配美学颜色。

最佳答案

我收回我的评论,你可以做点什么,那就是将异常值绘制成单独的点。

首先,您需要像往常一样制作箱线图并获取图层数据。

g <- ggplot(mpg, aes(class, hwy)) + geom_boxplot()

ld <- layer_data(g)

现在,您将原始数据拆分为与 x 轴相同的变量,并使用箱线图数据找出哪些数据点是异常值。

split <- split(mpg, mpg$class)

outliers <- lapply(seq_along(split), function(i) {
box <- ld[ld$group == i, ]
data <- split[[i]]
data <- data[data$hwy > box$ymax | data$hwy < box$ymin, ]
data
})
outliers <- do.call(rbind, outliers)

然后您将箱线图和点绘制为不同的层,您将拥有对点的通常级别的控制:

ggplot(mpg, aes(class, hwy)) +
geom_boxplot(outlier.shape = NA) +
geom_point(data = outliers, aes(colour = manufacturer))

enter image description here

关于r - geom_boxplot,如何根据组专门为异常值着色并保持黑色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57614343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com