使用python获得N个区分度较高的RGB颜色值

获得任意N个区分度最高的RGB颜色值是一个经典的问题,之前在做一些可视化的东西时需要解决这个问题。首先去网上找了一些方法,未果,于是想自己来搞,心里的想法是,先给出一个距离函数用来度量两个RGB颜色值的区分度,然后再通过随机和贪心的方式依次获得N个颜色值。如果要这样搞的话,距离函数的定义就非常关键了,这就避免不了要去看一些学术论文,想着就有点畏惧,又要查文献、读文献,感觉要花好几天时间。于是就先放下了,用随机生成颜色的方法来解决,但是效果很不好。今天又认真的查了一些资料,发现10年前,已经有人在Stack Overflow上问过了,其中第二个回答很全面,获赞最多,既给出了一些文献研究,又在N比较小的情况下给出了一些简单的解决方案。第一个回答的获赞也不少,而且非常简单,在这里,我就选了第一个回答用python实现了一下,其思路是先通过随机的方式获得N个区分度比较高的HLS颜色值,然后再将其转换为RGB颜色,代码如下所示(GitHub地址)。

import colorsys
import random

def get_n_hls_colors(num):
hls_colors = []
i = 0
step = 360.0 / num
while i < 360:
h = i
s = 90 + random.random() * 10
l = 50 + random.random() * 10
_hlsc = [h / 360.0, l / 100.0, s / 100.0]
hls_colors.append(_hlsc)
i += step

return hls_colors

def ncolors(num):
rgb_colors = []
if num < 1:
return rgb_colors
hls_colors = get_n_hls_colors(num)
for hlsc in hls_colors:
_r, _g, _b = colorsys.hls_to_rgb(hlsc[0], hlsc[1], hlsc[2])
r, g, b = [int(x * 255.0) for x in (_r, _g, _b)]
rgb_colors.append([r, g, b])

return rgb_colors
---------------------

原文地址:https://www.cnblogs.com/hyhy904/p/10977554.html

时间: 2024-07-31 04:01:06

使用python获得N个区分度较高的RGB颜色值的相关文章

python学习笔记之函数总结--高阶函数以及装饰器

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

分享《Python数据挖掘入门与实践》高清中文版+高清英文版+源代码

下载:https://pan.baidu.com/s/1J7DOGrjoF7HnaSZ8LvFh_A更多资料分享:http://blog.51cto.com/3215120 <Python数据挖掘入门与实践>高清中文版+高清英文版+源代码 高清中文版PDF,251页,带目录和书签,能够复制粘贴:高清英文版PDF,344页,带目录和书签,能够复制粘贴:中英文两版可以对比学习. 配套源代码: 经典书籍,讲解详细: 其中高清中文版如图 原文地址:http://blog.51cto.com/32151

Python参考手册 第4版高清中文PDF下载

本书是权威的Python语言参考指南,内容涉及核心Python语言和Python库的最重要部分.本书内容简洁扼要.可读性强,书中还包括了一些没有在Python官方文档或其他资料中出现过的一些高级的主题. 这一版在内容上进行了全面更新,介绍了Python 2.6和Python 3新引入的编程语言特性和库模块,同时还分析了Python程序员面临的如下难题:是应继续使用现有的Python代码,还是应制定计划将其移植到Python 3? Python参考手册 第4版高清中文PDF资料下载:https:/

分享《深度学习入门:基于Python的理论与实现》高清中文版PDF+源代码

下载地址:百度网盘 <深度学习入门:基于Python的理论与实现>高清中文版PDF+源代码 高清中文版PDF,314页,带目录标签,可复制粘贴,高清晰.配套源代码. 深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术.书中使用Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从零创建一个经典的深度学习网络,使读者在此过程中逐步理解深度学习. 其中,高清中文版如图: 原文地址:https://www.cnblogs.com/lifeijie/p/101214

参考《利用Python进行数据分析(第二版)》高清中文PDF+高清英文PDF+源代码

第2版针对Python 3.6进行全面修订和更新,涵盖新版的pandas.NumPy.IPython和Jupyter,并增加大量实际案例,可以帮助高效解决一系列数据分析问题. 第2版中的主要更新了Python第三方发布版Anaconda和其他所需Python包的安装指引: 更新pandas库到2017年的新版: 新增一章关于更多高级pandas工具和一些使用提示:新增statsmodels和scikit-learn的简明使用介绍. 学习参考: <利用Python进行数据分析(第二版)>高清中文

Python学习笔记__4.1章 高阶函数

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 我们知道Python内置的求绝对值的函数是abs() # 调用abs()函数可以获得一个值 >>> abs(-10) 10 # 那么,只写abs本身呢 >>> abs <built-in function abs> 可见,abs(-10)是函数调用,而abs是函数本身 1.1.将函数赋给变量 将函数赋给变量只有两种情况: 把函数计算得到的 结果 赋给变量 f=abs(-10) 把 函数本身 赋给变量

《Python数据科学手册》【高清中文版PDF+高清英文版PDF+源代码】

下载:https://pan.baidu.com/s/1RDTQxG3vjG2xGsX4Mx-5KA 最新出版的<Python数据科学手册>. <Python数据科学手册>[中文版和英文版][高清完整版PDF]+[配套源代码] 高清中文版PDF,474页,带目录和书签,能够复制粘贴:高清英文版PDF,548页,带目录和书签,能够复制粘贴:中英文两版可以对比学习. 配套源代码: 经典书籍,讲解详细: 其中高清中文版如图 原文地址:http://blog.51cto.com/32151

分享《Python数据科学手册》【高清中文版PDF+高清英文版PDF+源代码】

下载:https://pan.baidu.com/s/1RDTQxG3vjG2xGsX4Mx-5KA 最新出版的<Python数据科学手册>. <Python数据科学手册>[中文版和英文版][高清完整版PDF]+[配套源代码] 高清中文版PDF,474页,带目录和书签,能够复制粘贴:高清英文版PDF,548页,带目录和书签,能够复制粘贴:中英文两版可以对比学习. 配套源代码: 经典书籍,讲解详细: 其中高清中文版如图 原文地址:http://blog.51cto.com/32151

分享《利用Python进行数据分析(第二版)》高清中文版PDF+高清英文版PDF+源代码

资料下载:https://pan.baidu.com/s/1K3DjJ9S1S3AxpacEElNF9Q <利用Python进行数据分析(第二版)>[中文版和英文版][高清完整版PDF]+[配套源代码]<利用Python进行数据分析(第二版)>中文和英文两版对比学习, 高清完整版PDF,带书签,可复制粘贴:还有配套源代码:讲解详细并配有源代码. 其中,高清中文版如图: 原文地址:http://blog.51cto.com/3215120/2306885