دنبال رنگ کامل نگرد، دنبال کمترین غلط باش
خلاصهٔ کاملتر
نویسنده که میگه یه طراح خودآموختهست و همیشه از یادگیری رنگ فرار کرده، تو استرایپ با یه مسئلهی آشنا تو دیتاویژوالیزیشن روبهرو شد: چطور برای دادههای دستهبندیشده (مثلاً منابع پرداخت مختلف) پالت رنگی انتخاب کنه که هم شبیه رنگ برند استرایپ باشه، هم برای تعداد زیاد دسته جواب بده، و هم استاندارد دسترسپذیری WCAG رو رعایت کنه (کنتراست حداقل ۳ به ۱ بین رنگهای کنار هم).
پالتهای آمادهای مثل Viridis، ColorBrewer و Colorgorical هر کدوم یه جای کار میلنگیدن؛ یا دسترسپذیری رو فدای زیبایی میکردن یا برعکس. نویسنده با دیدن یه ویدیوی یوتیوب دربارهی تقسیمبندی حوزههای انتخاباتی، با الگوریتم simulated annealing آشنا شد؛ این الگوریتم از فرآیند آهنگری فلز الگو گرفته: فلز رو داغ میکنن تا اتمهاش آزاد حرکت کنن، بعد آرومآروم سردش میکنن تا اتمها بهترین چینش رو پیدا کنن. تو نسخهی الگوریتمی، بهجای اتم از رنگ استفاده میشه و بهجای دما، احتمال قبول کردن یه تغییر تصادفی.
نکتهی کلیدی این الگوریتمه که همیشه بهترین گزینه رو انتخاب نمیکنه؛ اوایل کار (وقتی دما بالاست) گاهی گزینهی بدتر رو هم قبول میکنه تا تو یه درهی کوچیک (بهینهی محلی) گیر نکنه. نویسنده برای هر معیار یه فرمول عددی ساخت: شباهت به رنگهای برند با فرمول ΔE سنجیده میشه (فاصلهی ادراکی بین دو رنگ، از ۰ تا ۱۰۰)، تنوع رنگها با میانگین فاصلهشون از هم، و دسترسپذیری برای کوررنگی با شبیهسازی ریاضی سه نوع کوررنگی (قرمز-سبز، آبی-زرد و کامل) و اندازهگیری فاصلهی رنگها بعد از اون شبیهسازی.
همهی این نمرهها با یه ضریب جمع میشن و یه عدد نهایی به اسم «هزینه» (cost) میسازن؛ هرچی هزینه کمتر، پالت بهتره. نویسنده با تنظیم ضریب هر معیار میتونه اولویت رو بین زیبایی و دسترسپذیری جابهجا کنه. رو یه مکبوک ۲۰۱۶، الگوریتم فقط تو سه ثانیه حدود ۱۶ هزار پالت رنگی مختلف رو میسنجه و بهترینش رو انتخاب میکنه.
نکات کلیدی:
- هدف: پالت رنگ برای نمودارهای دستهبندی که هم زیبا، هم متنوع، هم دسترسپذیر باشه (کنتراست حداقل ۳ به ۱ طبق WCAG 2.2)
- روش: الگوریتم simulated annealing، الهامگرفته از فرآیند آهنگری فلز
- فاصلهی رنگها با فرمول ΔE سنجیده میشه، از ۰ (یکسان) تا ۱۰۰ (کاملاً متفاوت)
- دسترسپذیری برای سه نوع کوررنگی با فرمول Brettel-Viénot-Mollon شبیهسازی میشه
- الگوریتم رو مکبوک ۲۰۱۶، حدود ۱۶ هزار پالت رو در سه ثانیه بررسی میکنه




