2012-01-24 12 views
7

Me gustaría saber si hay un algoritmo simple (o jQuery) para seleccionar colores distinguibles, hasta aproximadamente 20 colores diferentes. Si no lo hay, ¿dónde puedo encontrar una matriz de colores distinguibles que pueda usar directamente?Generación de color distinguible en javascript

Mi caso de uso es generar diferentes colores para gráficos circulares.

Respuesta

6

Mi idea es comenzar a partir del modelo de color HSV y caminar alrededor del perímetro (tono) con una saturación máxima y valor:

function hsvToRgb(h, s, v) { 
    //... see e.g.: http://snipplr.com/view/14590 
} 

function distinctColors(count) { 
    var colors = []; 
    for(hue = 0; hue < 360; hue += 360/count) { 
     colors.push(hsvToRgb(hue, 100, 100)); 
    } 
    return colors; 
} 

El distinctColors(10) produce:

[[255, 0, 0], [255, 153, 0], [204, 255, 0], [51, 255, 0], [0, 255, 102], [0, 255, 255], [0, 102, 255], [51, 0, 255], [204, 0, 255], [255, 0, 153]] 

Difícil de ver mirando solo los valores RGB, pero deberían ser lo más diferentes posible. He tomado la implementación hsvToRgb() desde here.

+0

+1 Este es el enfoque que uso aquí: http://graphicdivine.co.uk/timeline/. Vale la pena mencionar que la saturación y el brillo se pueden ajustar ajustando los dos '100's hacia abajo. – graphicdivine

+0

Además, la variable 'saturación' probablemente debería llamarse' hue', solo por claridad. – graphicdivine

+0

@graphicdivine: por supuesto, corregido, gracias! Por cierto, siéntete libre de editar las respuestas de otra persona si el error es tan obvio :-). –

2

Puede usar, por ejemplo. Color Scheme Designer.

No conozco ningún fragmento de JavaScript que lo haga automáticamente, pero puede crear uno si define correctamente el término "colores distinguibles".

También hay un defecto list of 16 basic colors in CSS3 (from W3C):

enter image description here

Usted puede usarlos y añadir tantos otros colores su gusto para su propio uso.

0

solución temporal, que recogió colores del artículo de Wikipedia sobre web colors:

var colors = [ 
    '#0000FF', //blue 
    '#FFFF00', //yellow 
    '#008000', //green 
    '#FFA500', // orange 
    '#FF0000', //red 
    '#800080', //purple 
    '#808000', //olive 
    '#00FF00', //lime 
    '#800000', //maroon 
    '#00FFFF', //aqua 
    '#008080', //team 
    '#000080', //navy 
    '#FF00FF', //fushua 
    '#808080' //gray 
]; 
0

He creado una biblioteca de Javascript para esto. Puede usar colorchain.js para generar una secuencia de colores con diferentes matices.

Cuestiones relacionadas