这个答案是基于answer to this same question by Hong Ooi的,但是定义了一个函数rgb2col function,**将col2rgb**返回的rgb值矩阵作为输入,这意味着我们可以只使用这两个函数在hex和rgb之间进行转换,换句话说,rgb2col(col2rgb(x)) = col2rgb(rgb2col(x)) = x。
输入结构
从col2rgb()返回的RGB颜色矩阵开始。例如:
[,1] [,2]
red 213 0
green 94 158
blue 0 115
功能
此函数将矩阵转换为十六进制颜色矢量。
rgb2col = function(rgbmat){
# function to apply to each column of input rgbmat
ProcessColumn = function(col){
rgb(rgbmat[1, col],
rgbmat[2, col],
rgbmat[3, col],
maxColorValue = 255)
}
# Apply the function
sapply(1:ncol(rgbmat), ProcessColumn)
}
# Colors to darken
ColorsHex = c("#D55E00","#009E73")
# Convert to rgb
# This is the step where we get the matrix
ColorsRGB = col2rgb(ColorsHex)
# Darken colors by lowering values of RGB
ColorsRGBDark = round(ColorsRGB*.7)
# Convert back to hex
ColorsHexDark = rgb2col(ColorsRGBDark)
4条答案
按热度按时间4ioopgfo1#
只需将字符串拆分,然后使用
rgb
:uttx8gqw2#
这个答案是基于answer to this same question by Hong Ooi的,但是定义了一个函数
rgb2col
function,**将col2rgb
**返回的rgb值矩阵作为输入,这意味着我们可以只使用这两个函数在hex和rgb之间进行转换,换句话说,rgb2col(col2rgb(x))
=col2rgb(rgb2col(x))
=x
。输入结构
从
col2rgb()
返回的RGB颜色矩阵开始。例如:功能
此函数将矩阵转换为十六进制颜色矢量。
用例示例
你可能想手动修改一个调色板,但是使用十六进制数会感觉不舒服。例如,假设我想稍微变暗一点两种颜色的矢量。
kuhbmx9i3#
可以转换为数值矩阵并使用
colourvalues::convert_colours()
blmhpbnm4#
你可以使用R中的
sprint
函数和下面文章中的提示:How to display hexadecimal numbers in C?