如何在MySQL中随机选择十六进制颜色,但避免特定的颜色范围? 背景

如何在MySQL中随机选择十六进制颜色,但避免特定的颜色范围? 背景,mysql,random,colors,Mysql,Random,Colors,我使用一个MySQL数据库来存储我在网站上的数据可视化中检索到的数据。在我的可视化中,800个项目中有两个是我最感兴趣的,并且在条形图中为它们指定了特定的颜色代码(暗橙色和浅橙色)。过滤器用于可视化,因此每次都可以看到一组不同的项目,但两个主要项目应始终突出(如果过滤器后存在) 期望的解决方案 我想两者兼得 彩色条形图 通过避免图表中的相似颜色,轻松识别两个主要项目 我当前的解决方案 一种方法可能是创建一组随机的十六进制颜色,手动(或半自动)将颜色代码与两个主要项目颜色代码相似的项目的所有颜

我使用一个MySQL数据库来存储我在网站上的数据可视化中检索到的数据。在我的可视化中,800个项目中有两个是我最感兴趣的,并且在条形图中为它们指定了特定的颜色代码(暗橙色和浅橙色)。过滤器用于可视化,因此每次都可以看到一组不同的项目,但两个主要项目应始终突出(如果过滤器后存在)

期望的解决方案 我想两者兼得

  • 彩色条形图
  • 通过避免图表中的相似颜色,轻松识别两个主要项目
我当前的解决方案 一种方法可能是创建一组随机的十六进制颜色,手动(或半自动)将颜色代码与两个主要项目颜色代码相似的项目的所有颜色更改,并将其存储为要检索的列表。现在,这将是我的策略

但我真的希望有一种自动化的方法,只创建随机的十六进制代码,但避免特定的颜色范围(在我的例子中,所有颜色都是橙色)

我已经知道如何随机创建十六进制代码:

concat('#'),子字符串((lpad(十六进制(rand()*10000000)),6,0))

现在下一步是避免橙色方案

我的问题 关于如何在
SELECT
语句中实现这一点,您有什么想法吗

SELECT
   item,
   concat('#',SUBSTRING((lpad(hex(round(rand() * 10000000)),6,0)) as color --THIS SHOULD CHANGE
   FROM item_list

这更像是一个javascript解决方案,但它每次为字符串生成相同的颜色,而不是随机生成

// this requires tiny color // https://github.com/bgrins/TinyColor
let 
    MD5=function(a){function b(a,b){var c,d,e,f,g;return e=2147483648&a,f=2147483648&b,c=1073741824&a,d=1073741824&b,g=(1073741823&a)+(1073741823&b),c&d?2147483648^g^e^f:c|d?1073741824&g?3221225472^g^e^f:1073741824^g^e^f:g^e^f}function c(a,c,d,e,f,g,h){return a=b(a,b(b(c&d|~c&e,f),h)),b(a<<g|a>>>32-g,c)}function d(a,c,d,e,f,g,h){return a=b(a,b(b(c&e|d&~e,f),h)),b(a<<g|a>>>32-g,c)}function e(a,c,d,e,f,g,h){return a=b(a,b(b(c^d^e,f),h)),b(a<<g|a>>>32-g,c)}function f(a,c,d,e,f,g,h){return a=b(a,b(b(d^(c|~e),f),h)),b(a<<g|a>>>32-g,c)}function g(a){var d,b="",c="";for(d=0;3>=d;d++)c=a>>>8*d&255,c="0"+c.toString(16),b+=c.substr(c.length-2,2);return b}var i,j,k,l,m,n,o,p,h=[];for(a=function(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;c<a.length;c++){var d=a.charCodeAt(c);128>d?b+=String.fromCharCode(d):(127<d&&2048>d?b+=String.fromCharCode(d>>6|192):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128)),b+=String.fromCharCode(63&d|128))}return b}(a),h=function(a){var b,c=a.length;b=c+8;for(var d=16*((b-b%64)/64+1),e=Array(d-1),f=0,g=0;g<c;)b=(g-g%4)/4,f=g%4*8,e[b]|=a.charCodeAt(g)<<f,g++;return b=(g-g%4)/4,e[b]|=128<<g%4*8,e[d-2]=c<<3,e[d-1]=c>>>29,e}(a),m=1732584193,n=4023233417,o=2562383102,p=271733878,a=0;a<h.length;a+=16)i=m,j=n,k=o,l=p,m=c(m,n,o,p,h[a+0],7,3614090360),p=c(p,m,n,o,h[a+1],12,3905402710),o=c(o,p,m,n,h[a+2],17,606105819),n=c(n,o,p,m,h[a+3],22,3250441966),m=c(m,n,o,p,h[a+4],7,4118548399),p=c(p,m,n,o,h[a+5],12,1200080426),o=c(o,p,m,n,h[a+6],17,2821735955),n=c(n,o,p,m,h[a+7],22,4249261313),m=c(m,n,o,p,h[a+8],7,1770035416),p=c(p,m,n,o,h[a+9],12,2336552879),o=c(o,p,m,n,h[a+10],17,4294925233),n=c(n,o,p,m,h[a+11],22,2304563134),m=c(m,n,o,p,h[a+12],7,1804603682),p=c(p,m,n,o,h[a+13],12,4254626195),o=c(o,p,m,n,h[a+14],17,2792965006),n=c(n,o,p,m,h[a+15],22,1236535329),m=d(m,n,o,p,h[a+1],5,4129170786),p=d(p,m,n,o,h[a+6],9,3225465664),o=d(o,p,m,n,h[a+11],14,643717713),n=d(n,o,p,m,h[a+0],20,3921069994),m=d(m,n,o,p,h[a+5],5,3593408605),p=d(p,m,n,o,h[a+10],9,38016083),o=d(o,p,m,n,h[a+15],14,3634488961),n=d(n,o,p,m,h[a+4],20,3889429448),m=d(m,n,o,p,h[a+9],5,568446438),p=d(p,m,n,o,h[a+14],9,3275163606),o=d(o,p,m,n,h[a+3],14,4107603335),n=d(n,o,p,m,h[a+8],20,1163531501),m=d(m,n,o,p,h[a+13],5,2850285829),p=d(p,m,n,o,h[a+2],9,4243563512),o=d(o,p,m,n,h[a+7],14,1735328473),n=d(n,o,p,m,h[a+12],20,2368359562),m=e(m,n,o,p,h[a+5],4,4294588738),p=e(p,m,n,o,h[a+8],11,2272392833),o=e(o,p,m,n,h[a+11],16,1839030562),n=e(n,o,p,m,h[a+14],23,4259657740),m=e(m,n,o,p,h[a+1],4,2763975236),p=e(p,m,n,o,h[a+4],11,1272893353),o=e(o,p,m,n,h[a+7],16,4139469664),n=e(n,o,p,m,h[a+10],23,3200236656),m=e(m,n,o,p,h[a+13],4,681279174),p=e(p,m,n,o,h[a+0],11,3936430074),o=e(o,p,m,n,h[a+3],16,3572445317),n=e(n,o,p,m,h[a+6],23,76029189),m=e(m,n,o,p,h[a+9],4,3654602809),p=e(p,m,n,o,h[a+12],11,3873151461),o=e(o,p,m,n,h[a+15],16,530742520),n=e(n,o,p,m,h[a+2],23,3299628645),m=f(m,n,o,p,h[a+0],6,4096336452),p=f(p,m,n,o,h[a+7],10,1126891415),o=f(o,p,m,n,h[a+14],15,2878612391),n=f(n,o,p,m,h[a+5],21,4237533241),m=f(m,n,o,p,h[a+12],6,1700485571),p=f(p,m,n,o,h[a+3],10,2399980690),o=f(o,p,m,n,h[a+10],15,4293915773),n=f(n,o,p,m,h[a+1],21,2240044497),m=f(m,n,o,p,h[a+8],6,1873313359),p=f(p,m,n,o,h[a+15],10,4264355552),o=f(o,p,m,n,h[a+6],15,2734768916),n=f(n,o,p,m,h[a+13],21,1309151649),m=f(m,n,o,p,h[a+4],6,4149444226),p=f(p,m,n,o,h[a+11],10,3174756917),o=f(o,p,m,n,h[a+2],15,718787259),n=f(n,o,p,m,h[a+9],21,3951481745),m=b(m,i),n=b(n,j),o=b(o,k),p=b(p,l);return(g(m)+g(n)+g(o)+g(p)).toLowerCase()},
    c = tinycolor(MD5('your title or something').substr(0,6)),
    hsv = c.toHsv();

if (hsv.h >= 16 && hsv.h <= 52) c.spin(100);
let desired_hex = c.toString();
//这需要极小的颜色//https://github.com/bgrins/TinyColor
让

(a,f,f,f,g;返回e=2147483648&a,f=214748383648和a,f=2147483648和b,f=214748383648和b,c=2147483648和b,c=2147483648&a,b,b,b,g(a,b,b,b,g(a,b)(1073741414141418241418223和a,b),c和d(d)214747483648.g,c和d?d?d?214748383648.g的英国英国英国的英国联邦职业职业职业教育基金基金基金基金会:c(c)在美国联邦政府在美国联邦政府在美国联邦政府在美国联邦政府的职业职业职业教育委员会(d)和美国)和美国联邦政府在美国联邦政府在美国,d?d?d?d?d?d?d?10741414141414141414141282828282828282828282828函数d(a,c,d,e,f,g,h){返回a=b(a,b(c&e | d&~e,f)(一)、b(a>32-g,c)及(b(a>32-g,c)(c)及b(a>32-g,c)的)、b(a>32-g,c)及b(b(a>32-c,c)的)、b(b(a>32-d^e,f)(c)及b(a>32-g(c(c(c^d^e,e,f,f,f,f),h))、b(b(a>32-b(a>32-c)及b(a>32-c),b(a>32-c),b(a>32-a>32-g,c),b(a>32-c)及b(a>32-c)及b(a>32-g,c)是),b(a(a>32-g,c)是)、b(a>32-c)是)、b(a>32-c)及b(a>32-c)是)、b(a(a>32-r(c.length-2,2);返回b}var i,j,k,l,m,n,o,p,h=[];for(a=函数(a){a=a.replace(/\r\n/g,“\n”);for(var b=”“,c=0;cd?b+=String.fromCharCode(d):(127d?b+=String.fromCharCode(d>>6 | 192):(b+=String.fromCharCode(d>>12 | 224),b+=String.fromCharCode(d>>6&63 | 128))}返回b}(a),h=函数(a){var b,c=a,c=a.length;b=c+8;for(var d=16*((b-1)/64%d)数组(e),f=0,g=0;g这更像是一个javascript解决方案,但它每次为字符串生成相同的颜色,而不是随机生成

// this requires tiny color // https://github.com/bgrins/TinyColor
let 
    MD5=function(a){function b(a,b){var c,d,e,f,g;return e=2147483648&a,f=2147483648&b,c=1073741824&a,d=1073741824&b,g=(1073741823&a)+(1073741823&b),c&d?2147483648^g^e^f:c|d?1073741824&g?3221225472^g^e^f:1073741824^g^e^f:g^e^f}function c(a,c,d,e,f,g,h){return a=b(a,b(b(c&d|~c&e,f),h)),b(a<<g|a>>>32-g,c)}function d(a,c,d,e,f,g,h){return a=b(a,b(b(c&e|d&~e,f),h)),b(a<<g|a>>>32-g,c)}function e(a,c,d,e,f,g,h){return a=b(a,b(b(c^d^e,f),h)),b(a<<g|a>>>32-g,c)}function f(a,c,d,e,f,g,h){return a=b(a,b(b(d^(c|~e),f),h)),b(a<<g|a>>>32-g,c)}function g(a){var d,b="",c="";for(d=0;3>=d;d++)c=a>>>8*d&255,c="0"+c.toString(16),b+=c.substr(c.length-2,2);return b}var i,j,k,l,m,n,o,p,h=[];for(a=function(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;c<a.length;c++){var d=a.charCodeAt(c);128>d?b+=String.fromCharCode(d):(127<d&&2048>d?b+=String.fromCharCode(d>>6|192):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128)),b+=String.fromCharCode(63&d|128))}return b}(a),h=function(a){var b,c=a.length;b=c+8;for(var d=16*((b-b%64)/64+1),e=Array(d-1),f=0,g=0;g<c;)b=(g-g%4)/4,f=g%4*8,e[b]|=a.charCodeAt(g)<<f,g++;return b=(g-g%4)/4,e[b]|=128<<g%4*8,e[d-2]=c<<3,e[d-1]=c>>>29,e}(a),m=1732584193,n=4023233417,o=2562383102,p=271733878,a=0;a<h.length;a+=16)i=m,j=n,k=o,l=p,m=c(m,n,o,p,h[a+0],7,3614090360),p=c(p,m,n,o,h[a+1],12,3905402710),o=c(o,p,m,n,h[a+2],17,606105819),n=c(n,o,p,m,h[a+3],22,3250441966),m=c(m,n,o,p,h[a+4],7,4118548399),p=c(p,m,n,o,h[a+5],12,1200080426),o=c(o,p,m,n,h[a+6],17,2821735955),n=c(n,o,p,m,h[a+7],22,4249261313),m=c(m,n,o,p,h[a+8],7,1770035416),p=c(p,m,n,o,h[a+9],12,2336552879),o=c(o,p,m,n,h[a+10],17,4294925233),n=c(n,o,p,m,h[a+11],22,2304563134),m=c(m,n,o,p,h[a+12],7,1804603682),p=c(p,m,n,o,h[a+13],12,4254626195),o=c(o,p,m,n,h[a+14],17,2792965006),n=c(n,o,p,m,h[a+15],22,1236535329),m=d(m,n,o,p,h[a+1],5,4129170786),p=d(p,m,n,o,h[a+6],9,3225465664),o=d(o,p,m,n,h[a+11],14,643717713),n=d(n,o,p,m,h[a+0],20,3921069994),m=d(m,n,o,p,h[a+5],5,3593408605),p=d(p,m,n,o,h[a+10],9,38016083),o=d(o,p,m,n,h[a+15],14,3634488961),n=d(n,o,p,m,h[a+4],20,3889429448),m=d(m,n,o,p,h[a+9],5,568446438),p=d(p,m,n,o,h[a+14],9,3275163606),o=d(o,p,m,n,h[a+3],14,4107603335),n=d(n,o,p,m,h[a+8],20,1163531501),m=d(m,n,o,p,h[a+13],5,2850285829),p=d(p,m,n,o,h[a+2],9,4243563512),o=d(o,p,m,n,h[a+7],14,1735328473),n=d(n,o,p,m,h[a+12],20,2368359562),m=e(m,n,o,p,h[a+5],4,4294588738),p=e(p,m,n,o,h[a+8],11,2272392833),o=e(o,p,m,n,h[a+11],16,1839030562),n=e(n,o,p,m,h[a+14],23,4259657740),m=e(m,n,o,p,h[a+1],4,2763975236),p=e(p,m,n,o,h[a+4],11,1272893353),o=e(o,p,m,n,h[a+7],16,4139469664),n=e(n,o,p,m,h[a+10],23,3200236656),m=e(m,n,o,p,h[a+13],4,681279174),p=e(p,m,n,o,h[a+0],11,3936430074),o=e(o,p,m,n,h[a+3],16,3572445317),n=e(n,o,p,m,h[a+6],23,76029189),m=e(m,n,o,p,h[a+9],4,3654602809),p=e(p,m,n,o,h[a+12],11,3873151461),o=e(o,p,m,n,h[a+15],16,530742520),n=e(n,o,p,m,h[a+2],23,3299628645),m=f(m,n,o,p,h[a+0],6,4096336452),p=f(p,m,n,o,h[a+7],10,1126891415),o=f(o,p,m,n,h[a+14],15,2878612391),n=f(n,o,p,m,h[a+5],21,4237533241),m=f(m,n,o,p,h[a+12],6,1700485571),p=f(p,m,n,o,h[a+3],10,2399980690),o=f(o,p,m,n,h[a+10],15,4293915773),n=f(n,o,p,m,h[a+1],21,2240044497),m=f(m,n,o,p,h[a+8],6,1873313359),p=f(p,m,n,o,h[a+15],10,4264355552),o=f(o,p,m,n,h[a+6],15,2734768916),n=f(n,o,p,m,h[a+13],21,1309151649),m=f(m,n,o,p,h[a+4],6,4149444226),p=f(p,m,n,o,h[a+11],10,3174756917),o=f(o,p,m,n,h[a+2],15,718787259),n=f(n,o,p,m,h[a+9],21,3951481745),m=b(m,i),n=b(n,j),o=b(o,k),p=b(p,l);return(g(m)+g(n)+g(o)+g(p)).toLowerCase()},
    c = tinycolor(MD5('your title or something').substr(0,6)),
    hsv = c.toHsv();

if (hsv.h >= 16 && hsv.h <= 52) c.spin(100);
let desired_hex = c.toString();
//这需要极小的颜色//https://github.com/bgrins/TinyColor
让

(a,f,f,f,g;返回e=2147483648&a,f=214748383648和a,f=2147483648和b,f=214748383648和b,c=2147483648和b,c=2147483648&a,b,b,b,g(a,b,b,b,g(a,b)(1073741414141418241418223和a,b),c和d(d)214747483648.g,c和d?d?d?214748383648.g的英国英国英国的英国联邦职业职业职业教育基金基金基金基金会:c(c)在美国联邦政府在美国联邦政府在美国联邦政府在美国联邦政府的职业职业职业教育委员会(d)和美国)和美国联邦政府在美国联邦政府在美国,d?d?d?d?d?d?d?10741414141414141414141282828282828282828282828函数d(a,c,d,e,f,g,h){返回a=b(a,b(c&e | d&~e,f)(一)、b(a>32-g,c)及(b(a>32-g,c)(c)及b(a>32-g,c)的)、b(a>32-g,c)及b(b(a>32-c,c)的)、b(b(a>32-d^e,f)(c)及b(a>32-g(c(c(c^d^e,e,f,f,f,f),h))、b(b(a>32-b(a>32-c)及b(a>32-c),b(a>32-c),b(a>32-a>32-g,c),b(a>32-c)及b(a>32-c)及b(a>32-g,c)是),b(a(a>32-g,c)是)、b(a>32-c)是)、b(a>32-c)及b(a>32-c)是)、b(a(a>32-r(c.length-2,2);返回b}var i,j,k,l,m,n,o,p,h=[];for(a=函数(a){a=a.replace(/\r\n/g,“\n”);for(var b=”“,c=0;cd?b+=String.fromCharCode(d):(127d?b+=String.fromCharCode(d>>6 | 192):(b+=String.fromCharCode(d>>12 | 224),b+=String.fromCharCode(d>>6&63 | 128))}返回b}(a),h=函数(a){var b,c=a,c=a.length;b=c+8;for(var d=16*((b-1)/64%d)数组(e),f=0,g=0;g将您的颜色生成为HSV,然后将HSV转换为RGB。限制您生成的色调,为您想要弹出的颜色留出一个范围。HSV是更好的方法,因为您可以屏蔽一个橙色色调范围。如果将其传输到网页,并且javascript是一个选项,则有一个名为tinycolor.js的库,我会使用它你如何用数字来定义橙色?tinycolor('orange').toHsv()返回{h:38.82,s:1,v:,a:1}不知道你想遮罩多少橙色,但是任何色调在32-48之间的东西?抱歉,这个范围有点小,你想排除16-52,它以红色结束,以黄色开始@Gauthier是的,这可能是另一个选项,看起来很容易实现。我只想在后端完成。因此,对于我的问题我需要一个
SQL
解决方案。也许我可以用HSV颜色模型解决一些问题。将你的颜色生成为HSV,然后将HSV转换为RGB。限制你生成的颜色,为你想要的颜色留出一个范围。HSV是更好的方法,因为你可以屏蔽一个橙色的范围。如果这得到piped到网页和javascript是一个选项。有一个名为tinycolor.js的库,我一直在使用它。如何用数字定义橙色?tinycolor('orange')。toHsv()返回{h:38.82,s:1,v:,a:1}不知道你想遮罩多少橙色,但是任何色调在32-48之间的东西?抱歉,这个范围有点小,你想排除16-52,它以红色结束,以黄色开始@Gauthier是的,这可能是另一个选项,看起来很容易实现。我只想在后端完成。因此,对于我的问题我需要一个
SQL
解决方案。也许我可以用HSV颜色模型解决一些问题。