我有一个ggplot2图并且百分比标签为白色,但有时条形图的颜色太浅而白色标签变得难以辨认.是否有一个函数,给定一个颜色值将返回,例如isDark或isLight?然后我可以将标签颜色设置为白色或黑色......
这是根据@MrFlick提供的(第二)链接中的强度比例实现挑选黑色与白色的文本颜色的策略.
该博客引用了W3C出版物:一种用于计算颜色感知亮度的标准公式,该算法使用RGB编码颜色的算法:
((Red value X 299) + (Green value X 587) + (Blue value X 114)) / 1000
Run Code Online (Sandbox Code Playgroud)
该col2rgb函数提供了一个3行矩阵,我乘以该网页提供的因子.我使用了一个"红色"的例子作为背景颜色,然后选择的文本将是"白色"
c( "black", "white")[ 1+(sum( col2rgb("red") *c(299, 587,114))/1000 < 123) ]
[1] "white"
Run Code Online (Sandbox Code Playgroud)
作为一个功能实现:
isDark <- function(colr) { (sum( col2rgb(colr) * c(299, 587,114))/1000 < 123) }
isDark("red")
[1] TRUE
Run Code Online (Sandbox Code Playgroud)