如何解决为一系列数字着色
我要实现的是在定义的RGB范围内为一系列数字着色。是否有一些算法可以完成这样的任务?关于着色图顶点(NP问题)的文章很多,但我的目标是为一系列较小值(
例如,要在最小的 RED (255,0,0)到最大的 GREEN (0,128,0)的范围内为此类序列着色,假设函数 generate_colors 可以完成任务(RGB值就是一个例子,我从调色板中获取它们只是为了展示我想要实现的目标):
>>> numbers = [1,107,200,450.3,500]
>>> generate_colors(numbers)
[(255,0),(255,153,51),255,(102,204,(0,128,0)]
就目前而言,我仅看到一种在 min 和 max 值之间定义增量的方法,并实现了具有Delta大小步长的梯度下降之类的方法。但是,如果数据如此不平衡,几乎所有值都将比中位数大得多?例如,在 1-30 范围内的10个值和在 30000-50 000 范围内的200个值。我认为,在这种情况下,应该有一种为这些值创建加权规则的方法,这样,来自中值的上半部分(来自示例)的颜色将收到比下半部分更多的分布式颜色。因此,我决定检查是否有针对此任务的已开发算法,以免自己重新发明它。
解决方法
对数字进行排序。通过二进制搜索分配颜色。
即,获取您的数字列表。将它们分开在中间。高于中位数的那些获得一种颜色范围,低于中位数的那些获得另一种颜色范围。如果存在中间值元素,它将获得中间值颜色。
每侧重复一次。
两个旁注。首先是红色到绿色是不佳的选择。约5%的人患有红绿色色盲。第二个是,如果您通过色轮跟踪3D路径,则将获得更广泛的颜色范围。 (您需要尝试使用它才能看到适合自己的方法。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。