之前给学科同事做了一个学情报告,主要是用echarts来展示一些学情数据。
然后临近报告生产的时候,学科老师问我图表的颜色能不能调整一下,因为生产的时候是黑白打印,肉眼几乎无法区分,如下图所示。
这个时候老夫是懵逼的,彩色的时候能清楚的分辨出对应颜色啊,谁知道黑白打印之后为什么区分不了。
然后一顿查资料,发现了一个词叫灰度值。黑白打印时,会将彩色按照一定算法,转化成灰度值。
这里我使用了一个不那么精确的计算公式,毕竟我只是要解决黑白打印时不同颜色对比度而已。有兴趣的同学可以自行百度灰度值计算公式。
RGB颜色与灰度值之间的换算规则:Gray = (R*30 + G*59 + B*11 + 50) / 100。也就是说,RGB颜色rgb(R, G, B)通过该规则转化成灰度值之后的颜色为rgb(Gray, Gray, Gray)
既然发现问题所在,那么就要开始解决问题了。怎么样定义图表的颜色,才能让他的灰度不同呢?
于是我写了一个方法,根据灰度值,随机生成rgb颜色,这样反向推导,就能快速的找到我们想要的结果。
多次随机,选取一组自己满意的色值组合,替代colorList,完美解决打印对比度问题