কোরোপ্লেথ মানচিত্র হল সবচেয়ে সাধারণ থিম্যাটিক মানচিত্র যা আপনি সংবাদে, নীতি প্রতিবেদনে এবং কোম্পানির dashboard-এ দেখবেন। আপনি যদি কখনও margin দ্বারা শেড করা একটি নির্বাচনের মানচিত্র, কেস হার দ্বারা শেড করা একটি COVID মানচিত্র, বা আয় দ্বারা শেড করা একটি GDP মানচিত্র দেখে থাকেন, আপনি একটি কোরোপ্লেথ পড়েছেন।
এই গাইডটি ব্যাখ্যা করে কোরোপ্লেথ মানচিত্র কী, কখন এটি ব্যবহার করতে হবে, সবচেয়ে সাধারণ ভুলগুলি কী, এবং একটি vector tile API দিয়ে একটি production কোরোপ্লেথ মানচিত্র কীভাবে তৈরি করতে হয়।
এক-বাক্যের সংজ্ঞা
একটি কোরোপ্লেথ মানচিত্র মানচিত্রের প্রতিটি অঞ্চলকে সেই অঞ্চলের জন্য পরিমাপ করা একটি একক সংখ্যাসূচক মান অনুসারে শেড করে, magnitude encode করে এমন একটি রঙের স্কেল ব্যবহার করে।
শব্দটি গ্রিক khoros (এলাকা) এবং plethos (বহুত্ব) থেকে এসেছে। এটি 1820-এর দশকের ফরাসি পরিসংখ্যানবিদদের সময়কার এবং তখন থেকেই থিম্যাটিক কার্টোগ্রাফির ভিত্তি।
কোরোপ্লেথ মানচিত্রের উদাহরণ
কিছু classic ব্যবহার:
- দেশ, রাজ্য বা পোস্টাল কোড অনুযায়ী জনসংখ্যা ঘনত্ব
- জেলা অনুযায়ী নির্বাচনের ফলাফল, রঙের তীব্রতা জয়ের margin দেখায়
- দেশ অনুযায়ী মাথাপিছু GDP, প্রায়শই একটি লগারিদমিক স্কেল ব্যবহার করে
- অঞ্চল অনুযায়ী বেকারত্বের হার
- কাউন্টি অনুযায়ী প্রতি 100,000 বাসিন্দার COVID কেস হার
- পাড়া অনুযায়ী গড় সম্পত্তির মূল্য
- আদমশুমারি ট্র্যাক্ট অনুযায়ী Broadband গ্রহণ
- কৃষি অঞ্চল অনুযায়ী ফসলের ফলন
ঐক্যবদ্ধ বৈশিষ্ট্য হল ডেটা প্রতি পূর্বনির্ধারিত অঞ্চলে একটি একক সংখ্যা।
কোরোপ্লেথ মানচিত্র বনাম হিট ম্যাপ
দুটি প্রায়ই বিভ্রান্ত করা হয়। পার্থক্যটি গুরুত্বপূর্ণ।
কোরোপ্লেথ মানচিত্রের পূর্বনির্ধারিত অঞ্চল প্রয়োজন। ডেটা ইতিমধ্যে aggregate। প্রতিটি অঞ্চল একটি রঙ পায়। সীমানা বার্তার অংশ।
হিট ম্যাপের point ডেটা প্রয়োজন। ঘনত্ব binning বা kernel smoothing দ্বারা গণনা করা হয়। আউটপুট একটি ক্রমাগত gradient যা প্রশাসনিক সীমানা উপেক্ষা করে। cluster discovery-এর জন্য এটি ব্যবহার করুন, অঞ্চল তুলনার জন্য নয়।
আপনার যদি প্রতি পোস্টাল কোডে একটি সংখ্যা থাকে, কোরোপ্লেথ ব্যবহার করুন। আপনার যদি GPS pings-এর একটি মেঘ থাকে, একটি হিট ম্যাপ ব্যবহার করুন।
কোরোপ্লেথ মানচিত্র কীভাবে তৈরি হয়
তিনটি উপাদান:
- Boundary geometry। আপনি যে অঞ্চলগুলি রঙ করতে চান তার জন্য GeoJSON polygons (বা vector tile layers)-এর একটি set, প্রতিটির একটি stable identifier (যেমন ISO country code, US state FIPS, EU NUTS code, postal code)।
- প্রতি অঞ্চলে একটি ডেটা মান। একটি simple JSON object বা CSV একই identifier দ্বারা key করা।
- একটি renderer যা তাদের join করে। আধুনিক web mapping libraries (MapLibre GL, Mapbox GL, deck.gl, OpenLayers) feature-state বা property expression ব্যবহার করে runtime-এ সীমানার সাথে ডেটা join করতে পারে।
MapLibre GL JS-এ ধারণাগত pattern এখানে:
map.addSource('regions', {
type: 'vector',
url: 'https://api.mapatlas.xyz/v1/tiles/regions.json',
});
map.addLayer({
id: 'regions-fill',
type: 'fill',
source: 'regions',
'source-layer': 'regions',
paint: {
'fill-color': [
'interpolate',
['linear'],
['feature-state', 'value'],
0, '#f7fbff',
50, '#6baed6',
100, '#08306b',
],
'fill-opacity': 0.8,
},
});
// Push your data to each feature at runtime
for (const [regionId, value] of Object.entries(yourData)) {
map.setFeatureState(
{ source: 'regions', sourceLayer: 'regions', id: regionId },
{ value }
);
}
মানচিত্রটি একবার boundary tiles fetch করে এবং আপনার ডেটা পরিবর্তিত হওয়ার সাথে সাথে সেগুলিকে re-style করে। কোনো server-side re-rendering নেই।
সঠিক রঙের স্কেল নির্বাচন
তিনটি নিয়ম:
একক-দিকের ডেটার জন্য Sequential। একটি hue-তে হালকা থেকে গাঢ়। অর্থপূর্ণ midpoint ছাড়া নিম্ন থেকে উচ্চ পর্যন্ত যাওয়া পরিমাণের জন্য ব্যবহৃত (জনসংখ্যা, আয়, হার)।
দুই-দিকের ডেটার জন্য Diverging। একটি neutral midpoint এবং দুটি hue বাইরের দিকে fan করছে (লাল এবং নীল, brown এবং teal)। যখন শূন্য বা গড় অর্থপূর্ণ এবং মানগুলি যেকোনো দিকে বসতে পারে (বছরের পর বছর বৃদ্ধি, নির্বাচনের margin, mean থেকে বিচ্যুতি) তখন ব্যবহৃত।
রেনবো স্কেল এড়িয়ে চলুন। তারা একটি ordering বোঝায় যা মানব উপলব্ধি অভিন্নভাবে মেলে না। তারা রঙ-অন্ধ দর্শকদের জন্যও ব্যর্থ হয়। ColorBrewer (colorbrewer2.org) কোরোপ্লেথ palettes-এর জন্য কার্টোগ্রাফার-পরীক্ষিত মানক।
একটি সাধারণ ভুল হল অনেক বেশি bin ব্যবহার করা। পাঁচ থেকে সাত sweet spot। তার বেশি হলে পাঠক adjacent shades আলাদা করতে পারে না।
শ্রেণীবিভাগ প্রশ্ন
একবার আপনার একটি স্কেল হলে, আপনাকে সিদ্ধান্ত নিতে হবে bin সীমানা কোথায় টানতে হবে:
- Equal interval। range-কে সমান অংশে বিভক্ত করে। সমানভাবে বিতরণ করা ডেটার জন্য কাজ করে, outliers থাকলে ব্যর্থ হয়।
- Quantile। প্রতিটি bin সমান সংখ্যক অঞ্চল ধারণ করে। যখন আপনি চান প্রতিটি শেড দৃশ্যমান হোক তখন উপযোগী, কিন্তু এটি পার্থক্যের magnitude লুকাতে পারে।
- Natural breaks (Jenks)। bins-এর মধ্যে variance কম করে। সবচেয়ে ডেটা-চালিত ডিফল্ট।
- Manual। যখন bin সীমানা অর্থ বহন করে (যেমন tax brackets, demographic thresholds)।
পছন্দটির মানচিত্রের বলা গল্পে একটি বাস্তব প্রভাব আছে। যেকোনো গুরুতর প্রতিবেদনে শ্রেণীবিভাগ পদ্ধতি publish করুন।
সাধারণ pitfalls
Area bias। বড়, কম-ঘনত্বের অঞ্চলগুলি দৃশ্যত মানচিত্রে আধিপত্য বিস্তার করে। margin দ্বারা রঙ করা US রাষ্ট্রপতি নির্বাচনের ফলাফলের একটি কোরোপ্লেথ বেশিরভাগ লাল দেখাবে কারণ গ্রামীণ কাউন্টিগুলি বিশাল। Cartograms বা dot-density maps এটি ঠিক করে।
হার পরিবর্তে raw counts। "প্রতি রাজ্যে COVID কেস"-এর একটি মানচিত্র বেশিরভাগ জনসংখ্যার একটি মানচিত্র। সর্বদা জনসংখ্যা, এলাকা বা অন্য denominator দ্বারা normalise করুন যদি না absolute count-ই আপনি জানাতে চান।
বিভ্রান্তিকর স্কেল। Quantile স্কেল প্রতিটি মানচিত্রকে আকর্ষণীয় দেখায় এমনকি যখন অন্তর্নিহিত spread ছোট হয়। Equal-interval স্কেল outliers থাকলে প্রতিটি মানচিত্রকে flat দেখায়। শ্রেণীবিভাগকে প্রশ্নের সাথে মেলান।
অনুপস্থিত ডেটা। আগে থেকেই সিদ্ধান্ত নিন কোনো ডেটা ছাড়া অঞ্চল ধূসর দেখানো হবে, বাদ দেওয়া হবে, নাকি শূন্যের মতোই রঙ করা হবে। প্রতিটি পছন্দ reading পরিবর্তন করে।
কখন একটি ভিন্ন chart বাছবেন
আপনার ডেটা যদি প্রতি অঞ্চলে multivariate হয়, কোরোপ্লেথ এটিকে flatten করে। বিবেচনা করুন:
- Small multiples। কোরোপ্লেথ মানচিত্রের একটি grid, প্রতি ভেরিয়েবলে একটি।
- Bivariate choropleth। দুটি ভেরিয়েবল একটি 2D রঙ grid হিসাবে encode। পড়া কঠিন কিন্তু কাজ করলে শক্তিশালী।
- Cartogram। মান দ্বারা অঞ্চলের আকার distort করে, area bias প্রভাবশালী হলে উপযোগী।
- মানচিত্রে Bar chart। কখনও কখনও ডেটা শুধু একটি table; মানচিত্র সাজসজ্জা।
Cartography যোগাযোগ। কোরোপ্লেথ অনেক টুলের মধ্যে একটি।
MapAtlas কোথায় ফিট করে
Dynamic Maps API দেশ, অঞ্চল এবং পোস্টাল কোড সীমানার জন্য vector tile sources ship করে যা আপনি runtime-এ আপনার নিজস্ব ডেটা দিয়ে style করতে পারেন, ঠিক উপরের MapLibre snippet-এর মতো। সীমানাগুলি EU-hosted, version-stamped, এবং মানক identifiers (ISO 3166, NUTS, জাতীয় পোস্টাল কোড সিস্টেম)-এর বিরুদ্ধে cleanly join করার জন্য ডিজাইন করা।
অঞ্চল অনুযায়ী aggregate stats প্রদর্শন করতে হবে এমন পৃষ্ঠাগুলির জন্য (প্রতি পোস্টাল কোডে রিয়েল এস্টেট মূল্য, প্রতি অঞ্চলে delivery খরচ, territory অনুযায়ী বিক্রয়) GeoEnrich API একই boundary IDs-এ key করা per-region মান ফেরত দেয়, তাই একই join মানচিত্র এবং আপনার tables উভয়ের জন্য কাজ করে। সম্পূর্ণ থিম্যাটিক-ম্যাপ background Thematic Map Guide-এ কভার করা হয়েছে।
সাধারণ জিজ্ঞাসা
কোরোপ্লেথ মানচিত্র কী?
কোরোপ্লেথ মানচিত্র একটি থিম্যাটিক মানচিত্র যেখানে ভৌগোলিক অঞ্চলগুলি (দেশ, রাজ্য, পোস্টাল কোড, আদমশুমারি ট্র্যাক্ট) প্রতিটি অঞ্চলের জন্য পরিমাপ করা একটি পরিসংখ্যানগত পরিবর্তনশীলের অনুপাতে রঙ করা বা শেড করা হয়। রঙের তীব্রতা মান encode করে, তাই গাঢ় শেড সাধারণত উচ্চ মান বোঝায় এবং হালকা শেড নিম্ন মান। কোরোপ্লেথ মানচিত্র জনসংখ্যা ঘনত্ব, নির্বাচনের ফলাফল, মাথাপিছু GDP, বেকারত্বের হার এবং প্রশাসনিক সীমানা দ্বারা স্বাভাবিকভাবে aggregate করা যায় এমন অন্য যেকোনো পরিমাণ visualise করার মানক উপায়।
কোরোপ্লেথ মানচিত্র এবং হিট ম্যাপের মধ্যে পার্থক্য কী?
কোরোপ্লেথ মানচিত্র প্রতিটি অঞ্চলের জন্য aggregate করা মানের উপর ভিত্তি করে পূর্বনির্ধারিত অঞ্চলগুলি (দেশ, পোস্টাল কোড, জেলা) রঙ করে। হিট ম্যাপ প্রশাসনিক সীমানা সম্মান না করে স্থান জুড়ে point ডেটার তীব্রতা ক্রমাগতভাবে দেখায়। যখন আপনার ডেটা ইতিমধ্যেই অঞ্চল অনুযায়ী aggregate করা থাকে (যেমন প্রতি রাজ্যে ভোট, প্রতি পোস্টাল কোডে বিক্রয়) তখন কোরোপ্লেথ ব্যবহার করুন। যখন আপনার ডেটা point-এর একটি মেঘ এবং আপনি দেখতে চান তারা কোথায় cluster করে (যেমন অপরাধের ঘটনা, গ্রাহকের pin, সেন্সর reading) তখন হিট ম্যাপ ব্যবহার করুন।
কখন আমার কোরোপ্লেথ মানচিত্র ব্যবহার করা উচিত?
কোরোপ্লেথ মানচিত্র ব্যবহার করুন যখন আপনার ডেটা প্রতি অঞ্চলে একটি একক সংখ্যাসূচক মান এবং অঞ্চলগুলি আকারে মোটামুটি তুলনীয় বা আপনি এলাকা বা জনসংখ্যা অনুযায়ী normalise করতে পারেন। ভালো উদাহরণ: কাউন্টি অনুযায়ী broadband সহ পরিবারের শতাংশ, অঞ্চল অনুযায়ী প্রতি 100k লোকে COVID কেস, পোস্টাল কোড অনুযায়ী গড় ভাড়া। কোরোপ্লেথ এড়িয়ে চলুন যখন অঞ্চলগুলির এলাকা বন্যভাবে পরিবর্তিত হয় (বড় গ্রামীণ অঞ্চলগুলি দৃশ্যত প্রভাবশালী হয় এমনকি কম জনসংখ্যা থাকলেও), বা যখন আপনার প্রতি অঞ্চলে একাধিক পরিবর্তনশীল আছে (small multiples বা একটি ভিন্ন chart টাইপ ব্যবহার করুন)।
আমি কীভাবে একটি কোরোপ্লেথ মানচিত্র তৈরি করব?
আপনার তিনটি জিনিস প্রয়োজন: আপনার অঞ্চলগুলির জন্য boundary geometry (GeoJSON polygons), একটি stable ID দ্বারা key করা প্রতিটি অঞ্চলের জন্য একটি ডেটা মান, এবং একটি renderer যা দুটিকে join করে এবং একটি রঙের স্কেল প্রয়োগ করে। সাধারণ stacks: fill-color expression সহ MapLibre GL বা Mapbox GL, getFillColor সহ deck.gl GeoJsonLayer, স্ট্যাটিক SVG-এর জন্য d3-geo সহ D3.js, বা একটি hosted dynamic map API। MapAtlas Dynamic Maps API দেশ, অঞ্চল এবং পোস্টাল কোডের জন্য boundary tiles ship করে যা আপনি runtime-এ আপনার নিজস্ব ডেটা দিয়ে style করতে পারেন।
কোরোপ্লেথ মানচিত্রের জন্য একটি ভালো রঙের স্কেল কী?
যখন ডেটা একটি স্বাভাবিক শূন্য সহ একটি একক পরিমাণ হয় তখন একটি sequential single-hue স্কেল (যেমন হালকা নীল থেকে গাঢ় নীল) ব্যবহার করুন। যখন মান একটি অর্থপূর্ণ midpoint-এর চারপাশে diverge করে (নির্বাচনের margin, বছরের পর বছর পরিবর্তন) তখন একটি diverging two-hue স্কেল (যেমন লাল থেকে সাদা থেকে নীল) ব্যবহার করুন। রেনবো স্কেল এড়িয়ে চলুন: তারা একটি ordering বোঝায় যা মানুষ অভিন্নভাবে উপলব্ধি করে না এবং তারা রঙ-অন্ধ ব্যবহারকারীদের জন্য ব্যর্থ হয়। ColorBrewer হল কার্টোগ্রাফার-পরীক্ষিত palettes-এর জন্য মানক রেফারেন্স।

