Mam listę kolorów reprezentowanych w hex - muszę je posortować, aby dopasować kolejność kolorów w tęczy. - Mógłbym zakodować kolejność sortowania - ale czuję, że jest to czystszy sposób.Sortuj (hex) kolory, aby dopasować tęczę
Odpowiedz
Oto funkcja, która, biorąc pod uwagę specyfikację kolorów w hex RGB, zwraca swój kolor 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)
Teraz można użyć tego, aby posortować listę RGB hex kolorów poprzez barwę:
color_list = ["000050", "005000", "500000"] # GBR
color_list.sort(key=get_hsv)
print color_list
Sortując za pomocą całej krotki HSV, upewniasz się, że kolory, które nie mają odcienia (tj. Skali szarości) sortują w spójnym miejscu, i że kolory o tym samym odcieniu, ale o różnych wartościach nasycenia/wartościach sortują w spójnej kolejności w stosunku do ich więcej- odpowiedniki nasycone/wycenione.
Nadal będziesz mieć bałagan, jeśli kolory różnią się znacznie w zależności od nasycenia (intensywności) lub wartości (jasności), ale nie da się tego obejść.
Spójrz w górę HSV odwzorowanie kolorów: https://en.wikipedia.org/wiki/HSL_and_HSV
Przez sortowania najpierw Hue, można sortować według postrzeganego koloru. Możesz dowolnie konwertować pomiędzy RGB i HSV.
Najprostszą rzeczą do zrobienia jest posortowanie ich w kolejności hue.
Modyfikowanie odpowiedź kindall aby umożliwić krótkie specyfikacji kolorów w hex (np #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)
Teraz można korzystać z funkcji, aby posortować listę według odcienia:
color_list = ["#005", "#000500", "#500000"]
color_list.sort(key=get_hsv)
print color_list
>> ['#500000', '#000500', '#005']
- 1. Oblicz kolor HEX mający 2 kolory i procent/pozycję
- 2. Chrome DevTools konwertuje wszystkie kolory HEX na RGB
- 3. geom_density, aby dopasować geom_histogram binwitdh
- 4. Skróć NSString, aby dopasować rozmiar?
- 5. Regex, aby dopasować niechlujne frakcje/numery mieszane
- 6. Regex, aby dopasować słowo do znaków + (plus)
- 7. Wyrażenie regularne, aby dopasować C plik #include
- 8. Regex, aby dopasować i ograniczyć klasy znaków
- 9. Skaluj tekst w widoku, aby dopasować?
- 10. Wyrażenie regularne PHP, aby dopasować słowa
- 11. Regex, aby dopasować zmienną w skryptach wsadowych
- 12. Regex, aby dopasować tylko niektóre nazwy plików
- 13. Ruby Regex, aby dopasować kolor skali szarości
- 14. PHP wyrażenie regularne, aby dopasować filepath
- 15. JS RegEx, aby dopasować tylko niektóre wzorce.
- 16. Matplotlib imshow offset, aby dopasować oś?
- 17. Skalowanie UIImageView, aby dopasować szerokość ekranu
- 18. Wyrażenie regularne, aby dopasować dwa oddzielne wyrażenia
- 19. Skaluj równanie, aby dopasować dokładną szerokość strony.
- 20. Regex, aby dopasować symbole:! $%^& *() _ + | ~ - = `{} []:"; '<>?,./
- 21. Regex, aby dopasować ścieżkę w C#
- 22. Skaluj rozmiar czcionki SKLabelNode, aby dopasować?
- 23. formacie hex
- 24. Clojure's odpowiednik kodowania Pythona ("hex") i dekodowania ("hex")
- 25. Hex Code Brightness PHP?
- 26. Sass - Konwersja HEX RGBA dla tła nieprzejrzystości
- 27. Reprezentacja HEX tablicy bajtowej
- 28. NSSegmentedControl Kolory
- 29. Napisz hex w GDB
- 30. bash ascii na hex
http://stackoverflow.com/questions/6208980/sorting-a-list-of-rgb-triplets-into-a-spectrum – NPE