目前,continuous colour bar legend, guide_colorbar
仅适用于 scale_fill
和 scale_colour
,不适用于 scale_alpha
。使用 scale_alpha
生成的图例是离散类型 ( guide_legend
)。
一个小示例,其中 color
和 alpha
映射到连续变量:
scale_color
生成连续的颜色条类型图例:
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, color = Sepal.Width)) +
geom_point()
scale_alpha
生成离散图例,尽管 alpha
映射到连续变量:
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, alpha = Sepal.Width)) +
geom_point()
是否有某种方法可以为 scale_alpha
获得连续的颜色条图例?
最佳答案
scale_alpha_continuous
的默认最小 alpha是 0.1,最大值是 1。我写这篇文章的假设是您可以调整最小值以使其更加明显,但您可以将最大值保持在 1。
首先我设置amin
默认值 0.1,点的所选颜色为 highcol
。然后我们使用col2rgb
制作 RGB 值矩阵并将其与白色混合,修改自 this answer written in C# 。请注意,我们与白色混合,因此您应该使用具有白色背景的主题(例如 theme_classic()
如下)。最后,我们将该矩阵转换为十六进制值,并将其粘贴到带有 #
的单个字符串中。前面为标准 RGB 格式。
require(scales)
amin <- 0.1
highcol <- hue_pal()(1) # or a color name like "blue"
lowcol.hex <- as.hexmode(round(col2rgb(highcol) * amin + 255 * (1 - amin)))
lowcol <- paste0("#", sep = "",
paste(format(lowcol.hex, width = 2), collapse = ""))
然后我们按照您可能已经计划的方式进行绘图,将您选择的变量设置为 alpha
审美,这里有一些geom_point
s。然后我们绘制另一层点,但将 颜色 设置为同一变量,并且 alpha = 0
(或不可见)。这给了我们我们需要的颜色条。然后我们要设置scale_colour_gradient
的范围从上面我们的颜色。
ggplot(iris, aes(Sepal.Length, Sepal.Width, alpha = Petal.Length)) +
geom_point(colour = highcol, size = 3) +
geom_point(aes(colour = Petal.Length), alpha = 0) +
scale_colour_gradient(high = highcol, low = lowcol) +
guides(alpha = F) +
labs(colour = "Alpha\nlabel") +
theme_classic()
我猜您最常只想将其与单一颜色一起使用,并且该颜色为黑色。在这种简化的情况下,替换 highcol
和lowcol
与“黑色”和“灰色90”。如果你想有多种颜色,每种颜色的 alpha 值都会因其他变量而变化……那就完全是另一回事了,可能不是一个好主意。
编辑后添加了一个坏主意!
如果您将上面的解决方案中的颜色替换为填充,您仍然可以使用颜色作为美学。这里我用了highcol <-hue_pal()(3)[2]
提取默认的绿色。
ggplot(aes(Sepal.Length, Sepal.Width, alpha = Petal.Length)) +
geom_point(aes(colour = Species), size = 3) +
geom_point(aes(fill = Petal.Length), alpha = 0) +
scale_fill_gradient(high = highcol, low = lowcol) +
guides(alpha = F) +
labs(fill = "Petal\nLength") +
theme_classic()
关于r - 如何为scale_alpha创建连续的图例(彩条样式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44168996/