Thursday, April 25, 2019

R প্রোগ্রামিং: ggplot2 ও RColorBrewer এর যৌথ কারিশমা

Advertisements

নান্দনিক গ্রাফের জন্য ggplot2 ব্যবহার না করলে জীবনটাই বৃথা। সাথে যদি RColorBrewer যুক্ত হয় তাহলে তো সোনায় সোহাগা। কথা কম বলে কাজে নেমে পড়ি।

এটাই আমরা শেষে দেখব 
ইনস্টল করা না থাকলে install.packages("ggplot2") দিয়ে ও একইভাবে RColorBrewer ইনস্টল করে নিন। এবার প্যাকেজ দুটি লোড করে নেই। মনে রাখবেন, লোড করার সময় কোটেশন দিতে হবে না।
library(ggplot2)
library(RColorBrewer)
এবার এঁকে ফেলি। মনে রাখতে হবে, ggplot2 প্যাকেজ ভেক্টরের বদলে ডেটাফ্রেইম নিয়ে কাজ করে। এখানে আমরা ggplot2 এর বিল্ট-ইন ডেটাসেট diamonds ব্যবহার করব। প্রথমে আমরা RColorBrewer ছাড়া এঁকে দেখি। 
ggplot(diamonds, aes(cut))+
  geom_bar(fill="blue")+
  labs(title="Diamonds Quality Bar Plot")

এখানে blue কালার দিলাম। এবার দেখা যাক RColorBrewer কীভাবে একে আরও আকর্ষণীয় করে।
ggplot(diamonds, aes(cut))+
  geom_bar(fill=brewer.pal(n=9, name='GnBu')[9:5])+
  labs(title="Diamonds Quality Bar Plot")
এখানে brewer.pal কীভাবে কাজ করে বুঝতে অসুবিধা হলে এখান থেকে প্লট কালারিং এর উপায়গুলো দেখে নিন। বর্ণিত ৯টি উপায়ের মধ্যে ৯ নম্বরটি দেখতে হবে। 

দুই প্যাকেজের সমন্বয় 
তবে একটি সমস্যা হয় অনেক সময়। RColorBrewer এর কালারের ৩ সেট কম্বিনেশন আছে। পুরো লিস্ট দেখতে পারেন এখানে। এগুলোর মধ্যে সর্বোচ্চ ১২টি পর্যন্ত কালার আছে। আমাদের বার চার্টের বার আরও বেশি হয়ে গেলেই R-এ error দেখায়। 

এটার সমাধানও সোজা। আগে থেকে কালার বানিয়ে রেখে দিলে সুবিধা। 
col <- brewer.pal(9, "Spectral")
আপনি চাইল Spectral এর বদলে অন্য প্যালেটও দিতে পারেন। লিঙ্কটা থেকে দেখে নিলেই হলো। এবার অনেকটা আগের মতোই। শুধু একটি পার্থক্য। colorRampPalette ফাংশনের ভেতরে প্যালেটকে দিয়ে দিতে হবে। 

ও আচ্ছা। কালার যেহেতু ১২টার বেশি হলে সমস্যা হবে, তাই আগেই ১২টার বেশি বার হবে এমন একটি ডেটা বানিয়ে নেই। 
df <- data.frame(x=sample(15, 1000, replace = T))
এবার শুধু আঁকা বাকি। 
ggplot(df, aes(x))+
  geom_bar(fill=colorRampPalette(col)(15))+
  coord_flip()
এটাই উপরে দেখানো গ্রাফটা। বিভিন্ন কালার কম্বিনেশন দিয়ে পাল্টে নিন চেহারা! আপনি চাইলেয়াগে থেকে না বানিয়ে রেখে একবারেও বসিয়ে দিতে পারেন। কেউ কিছু মনে করবে না।
ggplot(df, aes(x))+
  geom_bar(fill=colorRampPalette(brewer.pal(8, "GnBu"))(15))+
  coord_flip()
সূত্রঃ
১। R graph gallery

আব্দুল্যাহ আদিল মাহমুদ

লেখকের পরিচয়

আব্দুল্যাহ আদিল মাহমুদ। প্রভাষক, পরিসংখ্যান বিভাগ, পাবনা ক্যাডেট কলেজ। এর আগে রিসার্চ অ্যাসিস্ট্যান্ট হিসেবে কর্মরত ছিলেন EAL-এ। পড়াশোনা ঢাকা বিশ্ববিদ্যালয়ের পরিসংখ্যান বিভাগে। সম্পাদনা করছেন Stat Mania বিশ্ব ডট কম। পাশাপাশি লিখছেন বিজ্ঞানচিন্তা, ব্যাপন পাই জিরো টু ইনফিনিটিসহ বিভিন্ন ম্যাগাজিনে। অসীম সমীকরণ মহাবিশ্বের সীমানা নামে দুটি বই লেখার পাশাপাশি অনুবাদ করেছেন অ্যা ব্রিফার হিস্ট্রি অব টাইম । লেখকের এই সাইটের সব লেখা এখানে ফেসবুক | পারসোনাল ওয়েবসাইট