2009-01-30 33 views
5

Tôi có danh sách các giá trị số. Tôi có thể bình thường hóa các giá trị nếu cần.Lập bản đồ danh sách các giá trị số thành màu

Tôi cần chuyển danh sách này thành danh sách màu (trong HSL, RGB hoặc bất kỳ kiểu màu nào khác — Tôi luôn có thể thực hiện chuyển đổi sau).

Đối với mọi giá trị nhất định, màu sắc phải giống nhau mỗi lần.

Hai giá trị số cho trước khác nhau càng nhiều thì giá trị tương ứng sẽ càng lớn.

Tất cả các màu đã sử dụng phải tương phản với nhau càng tốt (đây là một giới hạn mềm, giải pháp thô sẽ làm).

Lưu ý rằng danh sách khá lớn (hàng nghìn con số), vì vậy chỉ cần ép tất cả các số vào một kênh màu sẽ tạo ra kết quả quá dày đặc.

Trả lời

2

Bạn có thể xem xét sử dụng 3D space-filling curve thông qua không gian màu đã chọn của mình. Tôi sẽ đề xuất ý kiến ​​thứ hai của Mark là CIELAB, ước gì tôi biết về lần cuối cùng tôi phải giải quyết một vấn đề tương tự.

0

Tại sao không sử dụng tông màu xám? Chỉ cần tính toán giá trị tối thiểu/tối đa và sử dụng giá trị đó để dịch từng số thành một màu khác nhau từ trắng sang đen.

Tôi biết đó không phải là màu sắc, nhưng theo ý kiến ​​của tôi sẽ dễ dàng hơn để diễn giải kết quả. Tôi có thể nói nó có ý nghĩa gì khi một cái gì đó tối hơn và nhẹ hơn, nhưng ai nói rằng, ví dụ, màu xanh lá cây có giá trị cao hơn màu cam?

+0

Có thể anh ấy muốn sự khác biệt tuyệt đối, không chênh lệch cao hơn/thấp hơn. 1, 10 và 100 sẽ có màu đỏ, đỏ cam và lục lam. – strager

+0

Có quá nhiều số (có thể là một nghìn), vì vậy các sắc thái của màu xám sẽ quá gần nhau. –

1

Xem: How to automatically generate N "distinct" colors?

Nó sẽ là tốt nhất để bình thường hóa giá trị của bạn, và chạy chúng thông qua các mã tôi đề nghị (nơi sắc == giá trị của bạn), xây dựng một bản đồ/băm. (Bạn có thể sử dụng hàm kiểu băm thay thế, có thể hiệu quả hơn.)

Bạn có thể "ngẫu nhiên" độ sáng (hoặc độ sáng, tùy thuộc vào kiểu máy của bạn) và độ bão hòa bằng cách sử dụng một số bit xác định trước số của bạn.

2

Bất kỳ thuật toán nào bạn cuối cùng cũng được giải quyết, bạn có thể thử không gian màu CIELAB. Nó bình thường hóa sự khác biệt trong nhận thức màu sắc của con người, do đó khoảng cách bằng số bằng nhau cho sự khác biệt cảm nhận bằng nhau.

Các vấn đề liên quan