目前,连续的颜色条图例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()
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?
默认的最小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)
我猜你最常想用的只有一种颜色,而且那种颜色是黑色的.在这个简化的情况下,替换highcol和lowcol"黑色"和"灰色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)
| 归档时间: |
|
| 查看次数: |
2034 次 |
| 最近记录: |