You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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)

lighten处理后的绿色

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:32:16