আমরা এর আগে বিভিন্ন ফাংশন এর গ্রাফ ড্র করেছি ম্যাথমেটিকা দিয়ে। ফাংশন ছাড়াও, আমরা বিন্দুও প্লট করতে পারি।
বিন্দু প্লট করে লাভ কী? প্রথমত আমাদের কাছে যদি অনেক গুলো Data থাকে, তাহলে সেগুলোকে বিন্দু হিসেবে প্লট করে আমরা পুরা Data সেট সমন্ধে আইডিয়া পেতে পারি, যেমন Data গুলো কতখানি ছড়ায়ে ছিটায়ে আছে, বা সর্বোচ্চ/নিম্ন মান কেমন এগুলা জানতে পারি এবং ডেইটা সেট সমন্ধে একটা conclusion এ আসতে পারি। এছাড়াও ম্যাথমেটিকা তে বিন্দু প্লট করে আমরা বিভিন্ন বহুভুজ-ও ড্র করতে পারি।
তো এই পয়েন্ট প্লট করতে আমাদের যে ফাংশন টা লাগে তার নাম ListPlot। নাম দেখেই বোঝা যাচ্ছে আমাদেরকে ইনপুট হিসেবে লিস্ট দিতে হবে, এবং আউটপুট এ আমরা পয়েন্টের প্লট পাবো। তো আমরা সাতজন মানুষের বয়সের একটা লিস্ট নিই list9 = { 10, 21, 25, 27, 50, 31, 26}
এখন আমাদের জাস্ট ListPlot[list9] লিখলেই হবে।
এই পয়েন্ট এর প্লট থেকে আমরা দেখতে পাচ্ছি সর্বনিম্ন মান ১০ আর সর্বোচ্চ মান ৫০। এবং বেশিরভাগ মান ২৫ এর আশেপাশে রয়েছে।। এখানে একটা বিষয় হচ্ছে, বিন্দু প্লট করার জন্য আমাদের X-অক্ষ বরাবর একটা মান লাগে, আর Y-অক্ষ বরাবর একটা মান লাগে। কিন্তু এখানে আমরা শুধু লম্ব অক্ষ (Y) বরাবর মান গুলো দিয়েছি, তাহলে ভূমির সমান্তরাল অক্ষ (X) বরাবর মানগুলো কই পেলো? আসলে লিস্ট প্লট এ যদি ক্রমজোড় আকারে মান না দেওয়া হয়, মানে (x,y) আকারে মান না দেওয়া হয় তাহলে লিস্টের ইনডেক্স কে লিস্টপ্লট X অক্ষ বরাবর বসায় এবং লিস্টের প্রতিটা মানকে লিস্টপ্লট Y অক্ষ বরাবর বসায়। অর্থাৎ, list9 এর প্লটে, প্রতিটা বিন্দুর y অক্ষ বরাবর পজিশন ছিল লিস্টের এক একটি এলিমেন্টের মান, এবং x অক্ষ বরাবর পজিশন ছিল ঐ মানটা লিস্টের কততম উপাদান (ইনডেক্স) সেটা।
কার্তেসীয় স্থানাংক ব্যবস্থায় আমরা ছক কাগজে যেরকম বিন্দু বসাতাম, এবার ম্যাথম্যাটিকা তেও সেরকম বিন্দু বসাবো। ধরি, আমরা (-1,2),(1,2),(0,4),(2,5) এই ৪টা বিন্দু বসাতে চাই। তাহলে আমরা একটা লিস্ট বানাবো, যেই লিস্টে ৪টা এলিমেন্ট থাকবে। প্রতিটা এলিমেন্টই হবে একেকটা লিস্ট, যার আবার দুইটা করে উপাদান থাকবে। প্রথম উপাদান হবে X অক্ষ বরাবর পজিশন, আর ২য় উপাদান হবে Y অক্ষ বরাবর পজিশন।
তাহলে আমরা আমাদের ৪টা বিন্দু ম্যাথম্যাটিকা তে দেখতে পাচ্ছি। আমরা চাইলে প্লট স্টাইল দিয়ে আলাদা আলাদা কালারও দিতে পারি। এবং একটু বড় করেও দেখাতে পারি বিন্দু গুলো।
প্রতিটা বিন্দুকে আলাদা করে স্টাইল করতে হলে পয়েন্টগুলোকে extra second bracket এ আবদ্ধ করতে হবে। আমরা প্রথম দিকে জানছিলাম ListPlot দিয়ে বিভিন্ন বহুভুজ ও আঁকা যায়। তাহলে একটা চতুর্ভুজও আঁকা যাবে। উপরের ৪টা বিন্দু দিয়ে আমরা একটা চতু্র্ভুজ আঁকবো। বিন্দু থেকে যদি চতুর্ভুজ আঁকতে হয়, তাহলে আমরা কী করি? আমরা দুইটা দুইটা করে বিন্দু নিয়ে সেগুলো যোগ করে দেই।
তাহলে এই ৪টা বিন্দুও আমাদের যোগ করতে হবে। কীভাবে যোগ করবো? তার জন্য ম্যাথমেটিকার LlistPlot এ একটা অপশন আছে, যার নাম joined এটার ডিরেক্টিভ যদি আমরা True করে দেই, তাহলে ListPlot এর মধ্যে যেগুলো পয়েন্ট দেওয়া থাকবে, বাম দিক থেকে দুইটা দুইটা করে নিয়ে সেগুলো জয়েন করে দিবে।
এখানে পয়েন্টগুলোর order matter করে। তাই পয়েন্টগুলো anti-clockwise নেওয়া হয়েছে কিন্তু এখানে দেখা গেল একটা বাহু মিসিং। কেন এরকম হলো? আমরা একটু আগেই জানলাম যে Joined->True দুইটা দুইটা করে পয়েন্ট নিয়ে যোগ করে। লিস্টে ৪টা পয়েন্ট ছিল, প্রথম ২টা পয়েন্ট নিয়ে যোগ করে বাহু বানানো হইছে। তারপর ২য় আর ৩য় পয়েন্ট নিয়ে বাহু বানানো হইছে, তারপর ৩য় আর ৪র্থ। ৪র্থ পয়েন্টের সাথে যোগ করার মতো পয়েন্ট ছিল না জন্য আর কোনো বাহু তৈরি হয়নি। এবং আমরা শেষমেশ ৩টা বাহুই পেয়েছি।। তাই আমাদেরকে প্রথম পয়েন্ট টা আবার শেষেও লিখতে হবে, তাহলে ব্যাপারটা কমপ্লিট হবে।
প্রতিটা বাহু আলাদা কালার করতে চাইলে কী করতে হবে সেটা বের করার দায়িত্ব আপনাদের উপর ছেড়ে দিলাম ListLinePlot নামের একটা ফাংশন আছে, যেটাতে আলাদা করে Joined->True বলা লাগে না কখনো কখনো আমাদের x এবং y এর implicit ফাংশন প্লট করতে হতে পারে। তখন আমরা নরমাল প্লট দিয়ে সেগুলা করতে পারবো না।
তারজন্য দরকার হবে ContourPlot নামের ফাংশন। আমরা এটা দিয়ে বৃত্ত, উপবৃত্ত, অধিবৃত্ত, pair of straight line সহ অনেক কিছুই আঁকতে পারবো।
ParametricPlot[]
ক্যালকুলাসে আমরা প্যারামেট্রিক ফাংশন দেখেছি। পৃথিবীর অনেক সুন্দর সুন্দর গ্রাফ প্যারামেট্রিক ফাংশনেরই হয়ে থাকে। বাকি প্লট-ফাংশন গুলোর মতোই এখানেও প্রথমে প্যারমেট্রিক ফাংশন দুইটা একটা সেকেন্ড ব্রাকেট এর মধ্যে লিখবো, তারপর প্যারামিটার বা কমন ভ্যারিয়েবল এর মান টা দিব।
ইন্টারনেট ঘাটলে এরকম অসংখ্য সুন্দর গ্রাফ খুঁজে পাওয়া যাবে। আমরা এতোক্ষণ যেসব গ্রাফ দেখেছি সেগুলোতে শুধু কার্ভ বা বক্ররেখাই দেখা যাচ্ছিল এবং তার ভেতরের অংশ টুকু ফাঁকা ছিল। আমরা একটা ফাংশনকে একটা নির্দিষ্ট সীমার মধ্যে ভরাট করতে পারি।
এর জন্য একটা ফাংশন আছে নাম RegionPlot ।
এরমধ্যে আমরা একটা অসমতা দিব,আর রেঞ্জ দিব, তাহলেই ঐ অসমতা জুড়ে একটা গ্রাফ এঁকে দিব।
রিজিওন প্লট দিয়ে ভরাট করা বৃত্তও আঁকা যায়, শুধু সমানের জায়গায় আমাদেরকে less than equal দিতে হবে।
washer শেপ বানানোর জন্য কীভাবে অসমতা সেট করতে হয় তা লক্ষ্মণীয় আমরা শেষ যে ধরনের প্লট নিয়ে আলোচনা করবো তা হলো Plot3D । এটা দিয়ে থ্রি-ডি গ্রফ আঁকা যায়। এটা প্লট এর মতোই কাজ করে, তবে এখানে এক্স এবং ওয়াই দুটারই রেঞ্জ দিতে হয়। এবং যে ফাংশন দিতে হয় সেটাতে x ও y এর মান দিলে ফাংশনের যে আউটপুট পাওয়া যায় সেটা হলো z এর মান। ফলে আমরা ত্রি-মাত্রিক স্থানাংকের (x, y, z )পেয়ে গেলাম। এরকম (x, y, z) আকারে অনেকগুলো বিন্দু দিয়ে থ্রিডি প্লট তৈরি হয়। কয়েকটা example দেখা যাক।
এই ছিল প্লট নিয়ে আমাদের বেসিক আলোচনা, প্লট নিয়ে explore করার অনেক কিছু আছে, আশা করি সেগুলো আমরা নিজ দায়িত্বে explore করে নিব।