ভিজ্যুয়ালাইজেশন: পাই চার্টের পাপ আর প্রায়শ্চিত্ত

টেলিভিশনের টক শোতে প্রায়ই এমন চার্ট দেখা যায় যেখানে একটা দলের বার আকাশছোঁয়া আর আরেকটার বার মাটির কাছাকাছি। তারপর ভালো করে দেখলে বোঝা যায় অক্ষটা ৯০ থেকে শুরু হয়েছে, আর আসল পার্থক্য মাত্র দুই শতাংশ।
চার্ট সংখ্যার চেয়েও শক্তিশালী, কারণ চোখ সংখ্যার আগে আকৃতি দেখে। আর ঠিক এই কারণেই চার্ট দিয়ে সহজে মিথ্যা বলা যায়।
পাপ ১: অক্ষ শূন্য থেকে শুরু না হওয়া
বার চার্টে আমরা বারের দৈর্ঘ্য তুলনা করি। অক্ষ ৯০ থেকে শুরু হলে ৯৩ আর ৯১ এর বারে বিশাল পার্থক্য দেখায়। বার চার্ট সবসময় শূন্য থেকে শুরু করুন। লাইন চার্টে অবশ্য শূন্য থেকে শুরু করা বাধ্যতামূলক না, কারণ সেখানে আমরা ঢাল দেখি, তবে অক্ষ পরিষ্কারভাবে লিখতে হবে।
পাপ ২: থ্রিডি পাই চার্ট
পাই চার্টে আমরা কোণ তুলনা করি, আর মানুষের চোখ কোণ তুলনায় খুব দুর্বল। থ্রিডি করলে আরও খারাপ: সামনের টুকরো বড় দেখায়, পেছনেরটা ছোট।

প্রায়শ্চিত্ত: সাজানো আনুভূমিক বার চার্ট। কোনটা বড়, কোনটা ছোট, এক নজরে বোঝা যায়, আর লম্বা নামও আরামে পড়া যায়।
পাপ ৩: রংধনু রং
মানচিত্রে বা হিটম্যাপে পুরো রংধনু ব্যবহার করলে দেখতে উৎসবমুখর লাগে, কিন্তু হলুদের মতো কিছু রং চোখে বেশি উজ্জ্বল দেখায়, ফলে ভুয়া সীমারেখা তৈরি হয়। আর বর্ণান্ধ মানুষের (বিশেষ করে লাল-সবুজ) কাছে অনেক তথ্য হারিয়ে যায়।
প্রায়শ্চিত্ত: একটা রঙের হালকা থেকে গাঢ় (যেমন viridis), আর মাঝখানে অর্থবহ শূন্য থাকলে দুই রঙের বিপরীতমুখী স্কেল।
পাপ ৪: অনেক বেশি তথ্য
বারোটা লাইন, বারোটা রং, কোণায় একটা লেজেন্ড। দর্শক লাইন আর লেজেন্ডের মধ্যে চোখ ঘোরাতে ঘোরাতে ক্লান্ত হয়ে হাল ছেড়ে দেন।
প্রায়শ্চিত্ত: যে দুই-তিনটা লাইন গুরুত্বপূর্ণ, সেগুলো রঙিন করুন, বাকিগুলো হালকা ধূসর। লাইনের শেষে সরাসরি নাম লিখে দিন।
পাপ ৫: শিরোনামে কোনো বার্তা নেই
"মাসভিত্তিক বিক্রি" — তো? কী দেখব?
প্রায়শ্চিত্ত: শিরোনামে মূল কথা লিখুন: "রোজার মাসে অনলাইন বিক্রি দ্বিগুণ, ঈদের পর আবার আগের অবস্থায়।" চার্ট তখন সেই কথার প্রমাণ হয়ে যায়।
পাপ ৬: অযথা দশমিক
"বাজার অংশ: ৩৭.৮৪৬২%।" এত নির্ভুলতা দরকার নেই, আর এটা ডেটার চেয়ে বেশি নিশ্চয়তার ভান করে। প্রয়োজন অনুযায়ী গোল করুন।
ছোট্ট কোড, সৎ চার্ট
import matplotlib.pyplot as plt
shohor = ["ঢাকা", "চট্টগ্রাম", "খুলনা", "রাজশাহী", "সিলেট", "অন্যান্য"]
ongsho = [38, 21, 12, 10, 9, 10]
fig, ax = plt.subplots()
ax.barh(shohor[::-1], ongsho[::-1])
ax.set_xlabel("অর্ডারের অংশ (%)")
ax.set_title("অর্ধেকের বেশি অর্ডার আসে ঢাকা আর চট্টগ্রাম থেকে")
plt.tight_layout()
(বাংলা লেখা ঠিকমতো দেখাতে matplotlib এ বাংলা ফন্ট সেট করে নিতে হতে পারে।)
শেষ কথা
চার্ট বানানোর আগে তিনটা প্রশ্ন করুন: দর্শক কোন একটা জিনিস লক্ষ্য করবে? পাঁচ সেকেন্ডে কি সেটা বোঝা যাবে? চার্টটা কি কাউকে ভুল বোঝাতে পারে, এমনকি অনিচ্ছাকৃতভাবে? তৃতীয় প্রশ্নের উত্তর "হ্যাঁ" হলে আবার আঁকুন। সৎ চার্ট বানানো একটা দায়িত্ব, কারণ মানুষ চার্ট দেখেই সিদ্ধান্ত নেয়।