我有一个ggplot2图并且百分比标签为白色,但有时条形图的颜色太浅而白色标签变得难以辨认。是否有一个函数,给定一个颜色值将返回是否是例如是暗还是亮?然后我可以将标签颜色设置为白色或黑色......
答案 0 :(得分:8)
根据@MrFlick提供的(第二)链接中的强度等级,实施选择黑色与白色的文本颜色的策略。
该博客引用了W3C出版物:a standard formula for calculating the perceived brightness of a color,它使用RGB编码颜色的算法:
((Red value X 299) + (Green value X 587) + (Blue value X 114)) / 1000
col2rgb
函数提供了一个3行矩阵,我乘以该网页中提供的因子。我使用了一个“红色”的例子作为背景颜色,然后选择的文本将是“白色”
c( "black", "white")[ 1+(sum( col2rgb("red") *c(299, 587,114))/1000 < 123) ]
[1] "white"
作为一个功能实现:
isDark <- function(colr) { (sum( col2rgb(colr) * c(299, 587,114))/1000 < 123) }
isDark("red")
[1] TRUE