آماگ
۲۷ تیر ۱۴۰۵، ۰۸:۴۴

آیا برای رنگ‌آمیزی یک نقشه کرومپلت (گستره‌نگاشت) باید از مقیاس گسسته یا پیوسته استفاده کنم؟

من در حال ساخت یک نقشه کرومپلت برای یک رقابت محلی پیشِ رو با استفاده از D3 هستم. دو نامزد برای یک انتخابات در حال رقابت هستند. برای هر چندضلعی در نقشه‌ام، اگر نامزد قرمز رأی بیشتری داشته باشد، رنگ باید قرمز باشد. اگر نامزد آبی رأی بیشتری داشته باشد، رنگ باید آبی باشد. اگر نامزد آبی با اختلاف زیاد برنده شود، رنگ باید آبی تیره‌تر باشد. اگر نامزد قرمز با اختلاف زیاد برنده شود، رنگ باید قرمز تیره‌تر باشد. آیا برای این کار باید از مقیاس گسسته یا پیوسته استفاده کنم؟ یعنی، آیا باید یک طیف رنگی از قرمز تا آبی برای یک درجه اشباع یا شدت معین ایجاد کنم؟ یا باید دسته‌هایی بسازم به طوری که اگر نسبت قرمز/آبی در یک بازه معین قرار گرفت، به آن چندضلعی یکی از چند رنگ اختصاص داده شود؟ از آموزش‌ها چنین برمی‌آید که بیشتر افراد دسته‌بندی (bins) می‌سازند.

پاسخ‌ها (2)

۲۷ تیر ۱۴۰۵، ۰۹:۴۴
برای هر یک از این دو روش مزایا و معایبی وجود دارد. خلاصه کلام، به شما توصیه می‌کنم «دسته‌ها» (bins) بسازید.
چند نکته برای کمک به انتخاب شما، و درباره طراحی نقشه‌های کرومپلت به طور کلی: یک نگاشت مستقیم از مقدار داده به رنگ (نقشهٔ «طبقه‌بندی‌نشده») را می‌توان دقیق‌ترین راه نمایش داده‌ها در نظر گرفت، اما نقشه‌های طبقه‌بندی‌شده (نقشه‌هایی با «دسته»ها) به چند دلیل می‌توانند خواناتر باشند. اگر از نقشهٔ طبقه‌بندی‌نشده استفاده کنید و داده‌ها کج‌توزیع (اسکیو) باشند، یا در مجموعه داده نقاط پرت وجود داشته باشد، نقاط پرت به‌وضوح خودنمایی می‌کنند، در حالی که بسیاری از چندضلعی‌ها می‌توانند از نظر رنگ بسیار به هم شبیه شوند. این موضوع این واقعیت را برجسته می‌کند که چند ناحیه به‌شدت با بقیه تفاوت دارند (در مورد شما، اگر چند ناحیه ترجیح به‌مراتب بیشتری برای یک نامزد نسبت به اکثر نواحی داشتند)، اما تشخیص روابط درون بقیه محدوده نقشه دشوارتر است. در یک نقشهٔ طبقه‌بندی‌شده، هر طبقه باید از نظر بصری متمایز باشد، بنابراین به‌راحتی می‌توان تشخیص داد که یک ناحیه در کجای داده‌ها قرار دارد، به بهای از دست رفتن برخی از تفاوت‌های ظریف‌تر. مشکل دیگر این است که ادراک شدت رنگ به‌صورت کاملاً خطی نیست. بنابراین اگر طیف رنگی از سفید تا آبی داشته باشید، متناظر با از «هیچ نامزدی رأی بیشتری دریافت نکرده» تا «حداکثر پیشتازی یک نامزد»، رنگی که در ۷۵٪ فاصله بین سفید و آبی قرار دارد ممکن است به‌عنوان ۷۵٪ فاصله بین دو رنگ درک نشود، و در نتیجه کاربر نقشه فرضی نادرستی درباره مقدار داده‌ای که نشان می‌دهد بکند. از سوی دیگر، در نقشه‌های طبقه‌بندی‌شده می‌توان رنگ هر طبقه را با دقت انتخاب کرد تا به‌وضوح و متمایز درک شود. من دانش کافی برای طراحی مجموعه‌ای از رنگ‌ها که این کار را انجام دهد ندارم، اما سینتیا بروئر (Cynthia Brewer) و مارک هاروور (Mark Harrower) دارند، و آن‌ها سایت colorbrewer2.org را ساخته‌اند، یک ابزار عالی (رایگان) برای کمک به کارتوگراف‌ها در انتخاب طرح‌های رنگی خوب برای نقشه‌هایشان. می‌توانید از میان انواع طرح‌ها انتخاب کنید، تعداد طبقات را انتخاب کنید، و پیش‌نمایشی از شکل ظاهری طرح در عمل و مقادیر RBG، HEX یا CMYK را برای هر رنگ در طرح دریافت می‌کند. بسیار مفید است و صرفاً هم سرگرم‌کننده است که با آن بازی کنید. به همین دلایل، توصیه می‌کنم یک نقشهٔ طبقه‌بندی‌شده بسازید. تعداد توصیه‌شده طبقات معمولاً یک عدد فرد در حدود ۵ تا ۹ است. استفاده از عدد فرد یک مقدار میانگین مشخص به شما می‌دهد، و این تعداد طبقات معمولاً برای ارائه تفکیک‌های مفید در داده‌ها کافی در نظر گرفته می‌شود، اما نه آن‌قدر زیاد که قابل تشخیص نباشند. از آنجا که از یک طرح رنگ واگرا استفاده می‌کنید (رنگ روشن در وسط، دو رنگ متفاوت در هر انتها)، می‌توانید طبقات بیشتری نیز داشته باشید، شاید ۷ تا ۹. به colorbrewer بروید، برای ماهیت داده‌های خود «diverging» (واگرا) را انتخاب کنید، طرح رنگ قرمز تا آبی را برگزینید، تعداد طبقات خود را تعیین کنید، و تمام! برای بخش زیادی از این موارد، هیچ قانون سخت‌گیری وجود ندارد. معیار این است: «آیا نقشه داده‌ها را به خوبی منتقل می‌کند؟» بازی کردن با پارامترها تا وقتی به چیزی برسید که «کار می‌کند» می‌تواند چیز خوبی باشد. حالا، یک نکته درباره ساخت کرومپلت‌ها. اگر این مطلب برای شما آشناست، عذرخواهی می‌کنم: یک نکته جالب هنگام استفاده از نقشهٔ طبقه‌بندی‌شده، نحوه تقسیم داده‌ها به طبقات است. آیا در فواصل مساوی در طول بازه شکسته می‌شود؟ آیا تعداد مشخصی از نقاط داده به هر طبقه اختصاص می‌یابد؟ تعداد مشخصی انحراف معیار از میانگین؟ آیا در «شکست‌های طبیعی» داده‌ها شکسته می‌شود؟ اینکه از کدام روش استفاده کنید در نحوه به‌تصویرکشیدن داده‌ها تفاوت ایجاد می‌کند. من چندان برنامه‌نویس نیستم و مطمئن نیستم اسکریپتی که به آن پیوند می‌دهید از کدام روش استفاده می‌کند. «شکست‌های طبیعی» معمولاً انتخاب خوبی هستند. برای داده‌هایی با نقطه میانی مشخص مانند داده‌های نظرسنجی (نقطه میانی همان تقسیم ۵۰/۵۰ است)، انحراف معیارها می‌توانند مفید باشند. هنگام ساخت کرومپلت، خوب است از داده‌هایی استفاده کنید که بر یک واحد مساحت استاندارد شده باشند. برای مثال، به‌جای استفاده از کل جمعیت یک شهرستان، بهتر است جمعیت به‌ازای هر مایل مربع در هر شهرستان ترسیم شود. دلیلش این است که یک ناحیه بزرگ‌تر تمایل دارد افراد بیشتری نسبت به ناحیه کوچک‌تر در خود داشته باشد، بنابراین تقسیم بر مساحت هر واحد نقشه‌کشی‌شده تصویر دقیق‌تری از روندها ارائه می‌دهد. داده‌ها همچنین می‌توانند به‌صورت درصد استاندارد شوند. برای مثال، نرخ فقر به‌جای تعداد افراد فقیر. برای اهداف شما، ترسیم درصد آرای به‌دست‌آمده برای یک نامزد گویاتر از تعداد خام آرای به‌دست‌آمده برای آن نامزد است. به هر حال، امیدوارم بخشی از این موارد برایتان مفید باشد و نقشه‌تان خوب از آب درآید! در بخش زیادی از این بحث از کتاب «نقشه‌نگاری موضوعی و تجسم جغرافیایی» (Thematic Cartography and Geovisualization) نوشته اسلوکم و دیگران استفاده کردم.