gpt4 book ai didi

r - geom_boxplot : map alpha levels to whiskers & outliers

转载 作者:行者123 更新时间:2023-12-04 20:36:26 26 4
gpt4 key购买 nike

有没有办法让geom_boxplot线、须线和离群点继承相同的 alpha分配给箱线图 fill在下面的情节?

library(ggplot2)

ggplot(iris, aes(x = Species, y = Sepal.Length, alpha = Species == "setosa")) +
geom_boxplot() +
scale_alpha_discrete(range = c(0.5, 1))

最佳答案

我不确定在 ggplot2 内是否有一种自然的方法可以做到这一点,但这里有一个 hacky 方式:颜色美学决定了线条、 mustache 和异常点的颜色。因此,我们将为情节添加颜色美感。但是,我们将手动设置颜色,以便它们在颜色定义中包含 alpha 值序列。因此,我们有效地将 alpha 值添加到颜色美学中。我已将美学映射到 Species以便我可以使用三个不同的 alpha 级别进行说明并添加 theme_bw()为了更好地对比 alpha 值。

首先,在最终图中设置我们想要的 alpha 值:

numVals = length(unique(iris$Species))
avals = seq(0.9, 0.3, length.out=numVals)

技巧如下:将所有颜色设置为黑色,但将 alpha 级序列添加到颜色定义中。为此,我们需要将 alpha 级别转换为 0 - 255 范围内的十六进制。
avalsHex = paste0("#000000", toupper(as.hexmode(round(avals*255))))

在上面的代码中, avals*255是 0 - 255 范围内的 alpha 水平。 as.hexmode将这些值转换为十六进制。 toupper不是绝对必要的,但我习惯于看到大写的十六进制颜色定义。然后我们将两位十六进制 alpha 值粘贴到颜色的末尾,在本例中为黑色 ( #000000 ),它给出了包含 alpha 值的三种颜色的向量。

不,我们使用颜色和 alpha 美学以及每种美学的手动值进行绘图:
ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_boxplot(aes(color=Species, alpha = Species)) +
scale_alpha_manual(values = avals) +
scale_colour_manual(values = avalsHex)

enter image description here

更新:为了解决您的评论,这里有一个示例,除了 alpha 值之外还有不同的颜色:
avalsHex = paste0(c("#FF0000","#00FF00","#0000FF"), toupper(as.hexmode(round(avals*255))))

然后只需运行相同的绘图代码即可获得:

enter image description here

更新 2:考虑颜色让我意识到您甚至不需要转换为十六进制来添加 alpha 值。例如,使用 hcl颜色你可以这样做:
# Black boxplots with 3 different alpha levels
scale_colour_manual(values = hcl(0,0,0, alpha=avals))

# Colored boxplots with 3 different alpha levels
scale_colour_manual(values=hcl(seq(15,375,length.out=4)[1:3], 100, 65, alpha=avals))
hcl函数返回每种颜色的十六进制代码,实际上为您处理转换。

关于r - geom_boxplot : map alpha levels to whiskers & outliers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34618517/

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