Tôi có một danh sách các màu được biểu diễn bằng hex - tôi cần sắp xếp chúng để khớp với thứ tự các màu trong cầu vồng. - Tôi có thể hardcode một thứ tự sắp xếp - nhưng tôi cảm thấy có một cách sạch hơn.Sắp xếp (hex) màu sắc để phù hợp với cầu vồng
Trả lời
Dưới đây là một chức năng, được đưa ra một đặc điểm kỹ thuật màu sắc trong hex RGB, trả về màu HSV của nó:
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)
Bây giờ bạn có thể sử dụng để sắp xếp danh sách các màu hex RGB bởi hue:
color_list = ["000050", "005000", "500000"] # GBR
color_list.sort(key=get_hsv)
print color_list
Bằng cách sắp xếp sử dụng toàn bộ bộ HSV, bạn đảm bảo rằng các màu không có màu sắc (tức là thang độ xám) sắp xếp ở một vị trí phù hợp, và màu sắc có cùng màu sắc, nhưng các giá trị/giá trị khác nhau sắp xếp theo thứ tự nhất quán các đối tác bão hòa/có giá trị.
Bạn vẫn sẽ có thứ gì đó lộn xộn nếu màu sắc thay đổi rất nhiều bởi độ bão hòa (cường độ) hoặc giá trị (độ sáng), nhưng không có xung quanh điều đó.
Tra cứu các đại diện màu HSV: https://en.wikipedia.org/wiki/HSL_and_HSV
Bằng cách sắp xếp đầu tiên của Huế, bạn có thể sắp xếp theo màu sắc nhận thức. Bạn có thể tự do chuyển đổi giữa RGB và HSV.
Điều đơn giản nhất là sắp xếp chúng theo thứ tự hue.
Sửa đổi câu trả lời kindall để cho phép thông số kỹ thuật ngắn màu trong hex (ví dụ #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)
Bây giờ bạn có thể sử dụng chức năng để sắp xếp danh sách bởi hue:
color_list = ["#005", "#000500", "#500000"]
color_list.sort(key=get_hsv)
print color_list
>> ['#500000', '#000500', '#005']
- 1. Sắp xếp các mảng phù hợp trong Java
- 2. màu sắc huyền thoại Phù hợp với qplot
- 3. Có thang màu tốt hơn so với bản đồ màu "cầu vồng" không?
- 4. Lớp khóa nào phù hợp để sắp xếp thứ cấp?
- 5. Tạo một quy mô cầu vồng màu sắc dựa trên một vector, theo thứ tự của vectơ
- 6. Làm thế nào để có được độ dốc màu cầu vồng trong C#?
- 7. Boxplot, làm thế nào để phù hợp với màu sắc của các ngoại lệ để lấp đầy thẩm mỹ?
- 8. sắp xếp lại thứ tự byte trong chuỗi hex (python)
- 9. Màu phù hợp với regex - mà không bỏ lỡ số
- 10. Rắc rối với Hợp nhất Sắp xếp
- 11. Thuật toán sắp xếp nào phù hợp với điều kiện 'giống như luồng' này?
- 12. Thiết Powershell màu sắc với các giá trị hex trong hồ sơ kịch bản
- 13. Cách thích hợp để sắp xếp myapp/routes/*
- 14. cách sắp xếp hợp nhất nhanh hơn so với các câu đố sắp xếp chèn tôi
- 15. Sắp xếp Colours (Objective-C)
- 16. Xếp hạng sao Android phù hợp với chiều rộng
- 17. hex màu từ UIColor
- 18. Làm thế nào để chuyển đổi 3 chữ số html hex màu đến 6 chữ số flex hex màu
- 19. Tìm hiểu màu sắc
- 20. Đường cong tối thiểu toàn cầu SciPy phù hợp với
- 21. Powershell Sắp xếp Sắp xếp tùy chỉnh với biểu
- 22. jQuery treeview với sắp xếp
- 23. Sắp xếp nhiều khóa với Unix sắp xếp
- 24. Chuyển chuỗi màu HEX thành Màu?
- 25. Lặp lại màu sắc
- 26. Màu sắc với lệnh unix "watch"?
- 27. Hợp nhất sắp xếp trong Haskell
- 28. vẽ nhiều biểu đồ trong cùng một hình với màu sắc khác nhau trong MATLAB
- 29. Texture thiếu màu sắc
- 30. Chức năng giảm cho các bảng cầu vồng
http://stackoverflow.com/questions/6208980/sorting-a-list-of-rgb-triplets-into-a-spectrum – NPE