Tengo una lista de colores representados en hexadecimal: necesito ordenarlos para que coincidan con el orden de los colores en un arcoiris. - Podría codificar un orden de clasificación - pero creo que hay una manera más limpia.Colores de ordenación (hex) para que coincida con el arcoíris
Respuesta
Aquí es una función que, dada una especificación de color en RGB hexadecimal, devuelve su color HSV:
import colorsys
def get_hsv(hexrgb):
hexrgb = hexrgb.lstrip("#") # in case you have Web color specs
r, g, b = (int(hexrgb[i:i+2], 16)/255.0 for i in xrange(0,5,2))
return colorsys.rgb_to_hsv(r, g, b)
Ahora usted puede usar esto para ordenar la lista de colores hexadecimales RGB por tonalidad:
color_list = ["000050", "005000", "500000"] # GBR
color_list.sort(key=get_hsv)
print color_list
Al ordenar utilizando toda la tupla HSV, se asegura de que los colores que no tienen tonalidad (es decir, escalas de grises) ordenan en un lugar consistente y que colorean con el mismo tono pero diferentes saturaciones/valores ordenados en un orden consistente en relación con su contrapartes saturadas/valoradas.
Todavía tendrá algo de un lío si los colores varían ampliamente por saturación (intensidad) o valor (brillo), pero no hay forma de evitar eso.
buscar la representación de color HSV: https://en.wikipedia.org/wiki/HSL_and_HSV
Al clasificar por primera vez por Hue, se puede ordenar por color percibido. Puede convertir libremente entre RGB y HSV.
Lo más fácil de hacer es ordenarlos en orden hue.
Modificación de respuesta Kindall para permitir especificaciones cortos de color en hexadecimal (por ejemplo #f0f
, #005
):
import colorsys
def get_hsv(hexrgb):
hexrgb = hexrgb.lstrip("#") # in case you have Web color specs
lh = len(hexrgb)
# Allow short and long hex codes
r, g, b = (int(hexrgb[i:i+lh/3], 16)/255.0 for i in xrange(0, lh, lh/3))
return colorsys.rgb_to_hsv(r, g, b)
Ahora se puede utilizar la función para ordenar la lista por tonalidad:
color_list = ["#005", "#000500", "#500000"]
color_list.sort(key=get_hsv)
print color_list
>> ['#500000', '#000500', '#005']
- 1. Encontrar colores HEX similares usando un umbral
- 2. expresiones regulares para que coincida con EOF
- 3. Regex para que coincida con Domain.CCTLD
- 4. Regex para que coincida con el último carácter de espacio
- 5. Regex para que coincida con palabras completas que comienzan con $
- 6. Expresión regular para que coincida con el archivo # include C
- 7. Regex para que coincida con el dominio simple
- 8. expresión regular para que coincida con el URL
- 9. Sass - Conversión Hex para RGBA para el fondo opacidad
- 10. regex para que coincida con el límite de palabras que comienza con caracteres especiales
- 11. Regex para que coincida con una palabra con signos + (más)
- 12. Regex para que coincida con el URL de fin de línea o con el carácter "/"
- 13. Rastreador de errores distribuidos para que coincida con DVC
- 14. Patrón para que coincida con la lista de elementos idénticos
- 15. Regex para que coincida con palabras de cierta longitud
- 16. Regex para que coincida con el final de la línea con el comodín
- 17. búsqueda de php (difusa) que coincida con
- 18. "ansioso" expresión regular que coincida con
- 19. Python expresión regular para que coincida con YAML Letra pequeña
- 20. Expresión regular para que coincida con la dirección IP + comodín
- 21. C#. Regex más rápida para que coincida con cualquier cadena
- 22. Regex para que coincida con palabras parciales (JavaScript)
- 23. Rubí Expresión regular para que coincida con una dirección URL
- 24. Regex para que coincida con una ruta en C#
- 25. javascript expresión regular para que no coincida con una palabra
- 26. WaitHandle.WaitAny para que coincida con la funcionalidad WaitForMultipleObjects
- 27. PHP expresión regular para que coincida con un div
- 28. C# expresión regular para que coincida con CUALQUIER carácter?
- 29. Perl expresiones regulares para que coincida con un hash MD5?
- 30. Expresión regular para que coincida solo con las letras
http://stackoverflow.com/questions/6208980/sorting-a-list-of-rgb-triplets-into-a-spectrum – NPE