如何在R语言中移除颜色透明度并保留原视觉颜色
移除颜色透明度并还原原颜色的方法
问题描述
我希望移除颜色的透明度,同时保留该颜色本身。
例如:我喜欢带透明度的绿色,但想要得到无透明度的同款颜色。
示例场景
原始绿色效果:
library(scales) show_col("green")

添加透明度后的绿色:
alpha("green",0.3) -> nice_green show_col(nice_green)

Created on 2022-11-21 with reprex v2.0.2
尝试lighten函数的问题:
我曾考虑使用colorspace包中的lighten函数,但得到的绿色并非我想要的。
library(colorspace) library(scales) lighten("green",0.3) -> not_green_I_want show_col(not_green_I_want)

Created on 2022-11-21 with reprex v2.0.2
解决方案
方法1:重置透明度为1
直接用scales::alpha将目标颜色的透明度设为1,即可还原原始无透明度颜色:
library(scales) alpha("green",0.3) -> nice_green # 还原无透明度的同款绿色 original_green <- alpha(nice_green, 1) # 对比展示两种颜色 show_col(c(nice_green, original_green))
方法2:截取十六进制颜色前6位
带透明度的十六进制颜色为8位格式(最后两位代表透明度),截取前6位即可得到原始无透明度颜色:
nice_green <- alpha("green",0.3) # 提取前6位十六进制值 original_green <- substr(nice_green, 1, 7) show_col(original_green)
方法3:通过RGB通道提取转换
用col2rgb提取颜色的RGB通道值,再重新转换为无透明度的颜色:
nice_green <- alpha("green",0.3) # 提取RGB通道数值 rgb_vals <- col2rgb(nice_green) # 转换为无透明度颜色 original_green <- rgb(rgb_vals[1], rgb_vals[2], rgb_vals[3], maxColorValue = 255) show_col(original_green)
内容的提问来源于stack exchange,提问作者ava
相关产品推荐
相关产品推荐

