如何为scale_alpha创建连续图例(颜色条样式)?

fil*_*s21 8 plot r ggplot2

目前,连续的颜色条图例guide_colorbar仅适用于scale_fillscale_colour,而不是scale_alpha.生成的图例是 scale_alpha离散类型(guide_legend).

一个小例子,其中coloralpha映射到一个连续变量:

scale_color 生成连续的颜色条类型图例:

ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, color = Sepal.Width)) +
  geom_point()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

scale_alpha生成离散图例,尽管alpha映射到连续变量:

ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, alpha = Sepal.Width)) +
  geom_point()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有没有办法获得连续的彩条传奇scale_alpha

Bri*_*ian 7

默认的最小alpha scale_alpha_continuous值为0.1,最大值为1.我写了这个假设您可以将最小值调整为更明显,但是您将最大值保持为1.

首先,我设置amin为默认值0.1,并选择点的颜色为highcol.然后我们使用它col2rgb来制作RGB值的矩阵并将它们与白色混合,这是用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 = ""))
Run Code Online (Sandbox Code Playgroud)

然后我们就像你可能已经计划的那样进行绘图,你的选择变量设置为alpha美学,而这里有一些geom_point.然后我们绘制另一层点,但颜色设置为同一个变量,并且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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我猜你最常想用的只有一种颜色,而且那种颜色是黑色的.在这个简化的情况下,替换highcollowcol"黑色"和"灰色90".如果你想拥有多种颜色,每种颜色都有一个不同的变量......这是另外一种蠕虫,可能不是一个好主意.


编辑添加一个坏主意!

如果您使用填充替换上面的解决方案的颜色,您仍然可以使用颜色作为审美.在这里,我习惯于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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述