如何在ggplot中使用带透明度的十六进制颜色,无需scale_alpha_manual?
当然可以直接用scale_color_manual实现
完全不用依赖scale_alpha_manual,直接把带透明度的十六进制颜色值传给scale_color_manual的values参数就行。
举个鸢尾花数据集的示例:
library(ggplot2) # 定义带透明度的十六进制颜色,前两位是透明度(66对应40%不透明度) trans_colors <- c( setosa = "#66000000", # 40%透明的黑色 versicolor = "#66FF0000",# 40%透明的红色 virginica = "#6600FF00" # 40%透明的蓝色 ) ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) + geom_point(size = 3) + scale_color_manual(values = trans_colors)
原理很简单:十六进制颜色如果是8位格式,前两位就代表透明度(范围从00完全透明到FF完全不透明),把这种带透明度的色值直接指定给颜色映射,ggplot会自动识别并应用透明度效果,不需要额外的alpha调节函数。
内容的提问来源于stack exchange,提问作者i.b
相关产品推荐
相关产品推荐

