نسخه دوم الگوریتم «کمترین رنگهای غلط» اومد
خلاصهٔ کاملتر
چهار سال پیش نویسنده تو یه مقاله نوشته بود که انتخاب پالت رنگ برای دستهبندی دادهها (مثلاً رنگ میلههای یه نمودار) یه مسئله بهینهسازیه، نه سلیقهای؛ باید یه تابع هزینه (cost function) تعریف کنی و با یه الگوریتم مثل annealing (یعنی شبیهسازی گرم و سرد کردن فلز برای رسیدن به بهترین حالت) دنبال کمترین رنگهای غلط بگردی. حالا نسخه دوم این کار رو به شکل یه پکیج npm به اسم category-colors و یه رابط گرافیکی به آدرس categorycolors.com منتشر کرده.
نسخه جدید پنج ارزیاب تازه اضافه کرده: JND که پالتهایی با دو رنگ خیلی شبیه به هم رو رد میکنه، Avoid که برعکس Similarity رنگها رو از یه ست مشخص دور نگه میداره، Contrast که کنتراست رنگها رو بالای حد استاندارد WCAG AA نگه میداره، و Saliency و Name difference که با دادههای واقعی اسمگذاری رنگ کار میکنن تا رنگها راحت قابل تشخیص و اسم بردن باشن. هر ارزیاب وزندار هست و کاربر میتونه ارزیابهای خودشو هم اضافه کنه.
علاوه بر این، الان میشه رنگها رو ثابت کرد یا ترتیبشون رو قفل کرد، و حتی میشه فقط یه کانال از رنگ (مثلاً فقط رنگین رو، نه روشنایی) رو قفل کرد. کتابخونه یه API عمومی و یه CLI (ابزار خط فرمان) کامل داره و میشه خروجی رو به شکل رنگ خام، CSS یا فرمت DTCG گرفت. خود الگوریتم annealing هم بهتر شده: دمای شروع رو خودکار از چند نمونهی تصادفی حساب میکنه و عملکردش خیلی سریعتر شده. فضای رنگ پیشفرض هم از RGB به okhsl تغییر کرده و فاصلهی رنگها با فرمول CIEDE2000 سنجیده میشه.
نویسنده میگه category-colors نسبت به ابزارهایی مثل Palettailor و QualPal کنترل بیشتری میده، چون هم به کوررنگی توجه میکنه هم اجازه میده رنگها رو از یه ست دلخواه دور نگه داری. در مقایسه با پالتهای استاندارد صنعت مثل Observable یا IBM Carbon هم، مخصوصاً وقتی تعداد دستهها زیاده، نتیجهی بهتری میده.
نکات کلیدی:
- کتابخونه با اسم category-colors روی npm منتشر شده و رابط گرافیکیش تو categorycolors.com هست
- پنج ارزیاب تازه اضافه شده: JND، Avoid، Contrast، Saliency و Name difference
- میشه رنگ یا حتی یه کانال از رنگ رو قفل کرد تا فقط بقیهش بهینه بشه
- فضای رنگ پیشفرض okhsl و فاصلهسنجی پیشفرض CIEDE2000 هست
- کتابخونه از ابزارهایی مثل Palettailor و QualPal و پالتهای استاندارد مثل IBM Carbon بهتر عمل میکنه




