رسم نمودار میله ای در متلب
به نام خدا و سلام.
به جلسه بیست و سوم از سری جلسات آموزش متلب خوش آمدید. آموزش متلب از وبسایت متلبپلاس به صورت رایگان ارائه میشود. در جلسه قبل به آموزش کامل رسم نمودار سه بعدی در متلب، به همراه جزئیات میپرداختیم. در این جلسه آموزش رسم نمودار میله ای در متلب ارائه میشود. در یک تقسیم بندی اساسی، نمودارهای میله به دو دسته دو بعدی و سه بعدی تقسیم میشوند. علاوه بر آن، نمودارهای میله ای دارای جزئیاتی نظیر رنگ میلهها، عنوان محورها و… میباشند.
با متلب پلاس همراه باشید.
رسم نمودار میله ای در متلب به صورت دو بعدی
نمودار میله ای نوعی نمودار در متلب است که نقاط را برحسب مقدارشان کنارهم با یک میله رسم میکند. ارتفاع هر میله به مقدار ارتفاع (مقدار) هر نقطه بستگی دارد. نمودارهای میله ای کمک به درک بهتر و سریعتر در برخی از انواع داده دارند. مثلا قیمت سهام نوعی نمودار میله ای است. برای رسم نمودار میله ای در متلب به صورت دو بعدی از دستور bar استفاده میکنیم. دستور bar(y) یک نمودار میله ای برای دادههای y رسم میکند. در واقع به هریک از اعضای y یک میله اختصاص میدهد. آموزش متلب رایگان را با یک مثال ساده از رسم نمودار میله ای با bar شروع میکنیم.
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y)
در نمودار شکل فوق مشاهده میشود که اعداد محور افقی x به طور پیشفرض اختصاص یافتهاند. ما میتوانیم مقادیر محور x را نیز خودمان به نمودار میله ای اختصاص دهیم. به مثال زیر دقت کنید.
x = 1900:10:2000;
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(x,y)
تغییر ضخامت نمودار میله ای در متلب
امکان تعیین ضخامت هر یک از میلهها در یک نمودار میله ای در متلب، فراهم است. برای این کار کافیست مقدار ضخامت موردنظر را درون دستور bar قرار دهیم. مقدار وارده شده، برابر با درصدی از فضای قابل رسم است. در نمودار میله ای مثال زیر، ضخامت هر میله را 0.5 (50 درصد) وارد میکنیم.
y = [75 105 91 63 73 88];
bar(y,0.5)
رسم نمودار میله ای گروهی در متلب
در دستور bar(y)، اگر y ماتریس باشد، متلب دادهها را براساس سطر گروه بندی کرده و ترسیم میکند. مثال زیر که مربوط به رسم نمودار میله گروهی در متلب است را ببینید.
y = [5, 4, 3, 5;
3, 6, 3, 1;
4, 3, 5, 4];
bar(y)
دقت داریم که ماتریس y دارای 3 سطر و 4 ستون است. به همین دلیل نمودار فوق دارای 3 گروه است. از طرفی هر گروه دارای 4 میله است، که همان تعداد ستونهای ماتریس y میباشد. به عبارت دیگر، متلب درایههای هر ستون را یک میله با رنگ مشخص درنظر گرفته و رسم میکند. به تعداد ستونها، میله و به تعداد سطرها، گروه داریم.
رسم نمودار میله ای به صورت چسبیده (انباشته)
برای رسم نمودار میله ای به صورت چسبیده (انباشته) روی هم، عبارت ‘stacked’ در دستور bar اضافه میشود. در این حالت، هر میله از نمودار مربوط به یک سطر از ماتریس است. به عبارت دیگر، به تعداد سطرها، میله خواهیم داشت. ارتفاع کل هر میله برابر با مجموع درایههای هر سطر است. در مثالهای زیر، دادههای ماتریس y را به دو شکل رسم میکنیم. شکل سمت چپ به صورت عادی و شکل سمت راست به صورت انباشته است.
افزودن عنوان برای هر میله
در مثالهای فوق دیدیم که اگر بردار y را به تنهایی در دستور bar وارد کنیم.ک اعداد 1 تا تعداد میلهها، به نام میلهها اختصاص مییابد. اگر بردار x نیز تعریف شود، bar(x,y) به هر میله، عدد متناظر در x را اختصاص میدهد. اما اگر بخواهیم نام اختصاصی (رشته متن) به هر میله اختصاص دهیم از categorical استفاده میکنیم. ابتدا با این دستور، نامهای موردنظر برای میلهها را ایجاد میکنیم. سپس این نامها را به نمودار میله ای اختصاص میدهیم. برای مثال نمودار میله ای تعداد اعضای 4 کلاس درس را با ضخامت 0.5 رسم میکنیم. نام این کلاسهای درس، را Class A تا Class D تعریف میکنیم.
x = categorical({'Class A','Class B','Class C','Class D'});
y = [33, 25, 37, 29];
bar(x,y,0.5)
تغییر ترتیب پیشفرض نمودار میله ای در متلب
در مثال قبل چون عناوین انتخاب شده از نظر حروف الفبا مرتب بودند، مشکلی نداشتیم. اما فرض کنید میخواهیم نمودار میله ای قیمت سهام ‘Microsoft’, ‘Apple’, ‘McDonald’, ‘Nike’, ‘FaceBook’ را رسم کنیم.
x = categorical({'Microsoft','Apple','McDonald','Nike','FaceBook'});
y = [274.73 157.28 250.78 114.49 203.77];
bar(x,y,0.5)
همانطور که مشاهده میکنید، متلب ترتیب وارد شده را تغییر داده است. در ترتیب وارد شده ابتدا Microsoft و انتها FaceBook بود در حالی که در شکل اینطور نیست. در واقع نرم افزار متلب دادهها را به ترتیب حروف الفبا مرتب کرده است. برای رسم با ترتیب دلخواه از دستور reordercats استفاده میکنیم. به این صورت که دادهها و ترتیب موردنظر را به این دستور میدهیم.
x = categorical({'Microsoft','Apple','McDonald','Nike','FaceBook'});
x_new = reordercats(x,{'Microsoft','Apple','McDonald','Nike','FaceBook'});
y = [274.73 157.28 250.78 114.49 203.77];
bar(x_new,y,0.5)
در شکل فوق مشاهده میکنید که نمودار میله ای با ترتیبی که خواستیم رسم شده است.
تغییر رنگ نمودار میله ای
مشابه با رسم نمودار ساده، امکان تغییر رنگ میلههای نمودار میله ای نیز وجود دارد. برای تغییر رنگ نمودار میله ای کافیست عبارت اختصاصی یا کد رنگ موردنظر را درون دستور bar بنویسیم. مثلا برای رسم نمودار میله با رنگ زرد (y اول کلمه yellow) برای میلهها، داریم.
y = [75 105 91 63 73 88];
bar(y,'y')
لیست کامل عبارت اختصاصی هر رنگ در رسم نمودار، در بخش تنظیمات رسم نمودار آمدهاست. (انتهای صفحه)
تغییر رنگ حاشیه میلهها
هر میله دارای یک خط در حاشیه خود است. برای تغییر رنگ حاشیه میلهها از عبارت ‘EdgeColor’ استفاده میکنیم. نام اختصاصی یا کد رنگ موردنظر پس از این عبارت میآید. رنگ حاشیه نمودار میله ای شکل فوق را به رنگ قرمز تغییر میدهیم.
y = [75 105 91 63 73 88];
bar(y,'y','EdgeColor','r')
تغییر ضخامت خط حاشیه میلهها
برای تغییر ضخامت خطوط حاشیه نمودار میله ای در متلب، از عبارت ‘LineWidth’ استفاده میکنیم. ضخامت موردنظر به صورت یک عدد اسکالر پس از این عبارت قرار میگیرد. مثلا برای افزایش ضخامت نمودار میله ای شکل قبل به اندازه 1.5 به صورت زیر عمل میکنیم.
y = [75 105 91 63 73 88];
bar(y,'y','LineWidth',1.5,'EdgeColor','r')
رسم نمودار میله ای روی هم
مشابه با رسم نمودار خطوط روی هم، نمودارهای میله ای هم میتوانند روی هم رسم شوند. برای رسم نمودارها روی هم، از دستور hold on کمک میگیریم. با تغییر ضخامت میلهها در نمودار دوم، رسم شدن نمودارها روی هم به وضوح دیده میشود. نمودار میله ای اول را به رنگ زرد (y) و نمودار دوم را با رنگ آبی (b) رسم میکنیم.
x = [1 2 3 4 5];
y1 = [37 39 46 56 67];
w1 = 0.5;
bar(x,y1,w1,'y')
y2 = [22 24 32 41 50];
w2 = 0.25;
hold on
bar(x,y2,w2,'b')
رسم نمودار میله ای به صورت افقی
تمام نمودارهای میله ای که تاکنون رسم کردیم، به صورت عمودی بودند. ممکن است بخواهیم نمودار میله ای را به صورت افقی رسم کنیم. برای این کار از دستور barh استفاده میکنیم. در واقع حرف h که آخر bar قرار گرفته مربوط به Horizontal (افقی) است. طرز استفاده از barh هیچ تفاوتی با دستور bar ندارد. به مثال زیر دقت کنید.
x = [2,4];
y = [1, 2, 3, 4; 5, 6, 7, 8];
barh(x,y)
علاوه بر این، تمامی آنچه در بالا برای نمودار میله ای ساده ذکر شد، در barh وجود دارد. مثلا رسم گروهی به صورت افقی، تغییر رنگ، ضخامت و… در barh نیز به همان شکل برقرار است. مثلا نمودار میله ای به صورت چسبنده (انباشته) را به صورت افقی رسم میکنیم.
y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];
barh(y,'stacked')
رسم نمودار میله ای سه بعدی در متلب
برای رسم نمودار میله ای سه بعدی در متلب از دستور bar3 استفاده میکنیم. طرز استفاده از دستور bar3 کاملا مشابه bar است. به مثال زیر دقت کنید.
Z = [1 5 8; 3 8 12; 5 1 16; 9 6 3; 11 3 14; 6 7 15];
bar3(Z)
رسم نمودار میله ای سه بعدی به صورت گروهی
در نمودار میله ای سه بعدی، برای اینکه میلهها به صورت گروهی رسم شوند باید عبارت ‘grouped’ را بنویسیم. اگر نمودار مثال قبل را به صورت گروهی رسم کنیم، داریم؛
Z = [1 5 8; 3 8 12; 5 1 16; 9 6 3; 11 3 14; 6 7 15];
bar3(Z,'grouped')
رسم نمودار میله ای سه بعدی به صورت افقی
برای رسم نمودار میله ای سه بعدی به صورت افقی از دستور bar3h استفاده میکنیم. در واقع حرف h که آخر bar3 قرار گرفته مربوط به Horizontal (افقی) است. طرز استفاده از bar3h هیچ تفاوتی با دستور bar3 ندارد. به مثال زیر دقت کنید.
Z = [1 5 8; 3 8 12; 5 1 16; 9 6 3; 11 3 14; 6 7 15];
bar3h(Z)
سایر تنظیمات نمودار میله ای سه بعدی مانند رنگ میلهها، انباشته کردن (چسبنده) و… مشابه با نمودار میله ای دو بعدی است. هر آنچه برای دستور bar با جزئیات ارائه شد، برای bar3 نیز برقرار است.
تنظیمات نمودار میله در متلب
رسم نمودار میله ای در متلب، دارای جزئیات بسیار زیادی است. مواردی مثل؛
- افزودن عنوان به نمودار
- عنوان محورها (لیبل)
- رسم نمودار روی هم یا در کنار هم
- عبارت اختصاصی رنگها در رسم نمودار
- نوشتن حروف یونانی و فرمول ریاضی در نمودار
- …
این جزئیات در رسم انواع نمودارها وجود دارد. به همین دلیل، این موارد را در بخش جزئیات آموزش رسم نمودار در متلب ارائه کردهایم. برای مشاهده این موارد روی لینک قرمز قبل کلیک نمائید.
تمرینات این جلسه
در انتهای این جلسه 3 تمرین متلب مربوط به مباحث این جلسه ارائه شده است. لطفا این تمرینها را حل کرده و با پاسخ آن مقایسه کنید. پاسخ تمرینات متلب این جلسه در کانال تلگرام متلب پلاس منتشر میشود. از آیکونهای سمت راست صفحه میتوانید در این کانال عضو شوید.
تمرین اول) نمودار میله ای دادههای 18, 15, 19, 12, 14, 16 را رسم کنید.
تمرین دوم) به هر یک از میلههای نمودار مثال قبل، عبارت A, B, C, D, E, F را اضافه کنید.
تمرین سوم) با استفاده از hold on، یک نمودار میله ای جدید روی نمودار تمرین اول رسم کنید. دادهها عبارتند از: 12, 9, 14, 5, 6, 7.
جمعبندی
جلسه بیست و سوم از سری جلسات آموزش متلب به پایان رسید. این جلسه درباره رسم نمودارهای میله ای در متلب صحبت کردیم. نمودارهای میله ای بخش مهمی از رسم نمودار در متلب میباشند. کابرد اساسی نمودارهای میله ای در رسم دادههای گسسته میباشد. تکنیکها و جزئیات متنوعی برای این نوع نمودار بیان شد. در انتها چند تمرین برای یادگیری بیشتر به شما واگذار کردیم که پاسخ آنها در کانال تلگرامی متلب پلاس وجود دارد. بی صبرانه منتظر نظرات، سوال و ابهامات شما عزیزان هستیم. سعی میکنیم تا هرگونه سوال یا ابهامی که در این باره دارید را پاسخ دهیم.
توصیه میشود که حتما تمرینات این جلسه را انجام بدید و اگر سوال و ابهامی دارید در بخش نظرات (پایین همین صفحه) به ما بگید. از فهرست سمت راست هم میتونید به بقیه جلسات دسترسی داشته باشید.
2 Comments
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
خیلی عالی بود. ممنون از متلب پلاس. من برام یک سوال پیش اومد. اگر بخوام چندتا نمودار میله ای در متلب رسم کنم که کنار هم باشند، باید چکار کنم؟ دقیقا مشابه نمودارهای میله ای که شما رسم کردید فقط بجای یک نمودار، 4 تا نمودار در یک صفحه باشه.
ممنون
سلام سیاوش جان
ببینید بطور کلی برای رسم چند نمودار در یک صفحه، از دستور subplot استفاده میشه. حالا تفاوتی نداره که بخواهیم نمودار میله ای رسم کنیم یا نمودار قطبی یا هر نوع نموداری. subplot(m,n,p) صفحه ی رسم رو به m سطر و n ستون تبدیل میکنه که شماره p اون فعال هست برای رسم.
مثلا اگر بخواهیم دوتا نمودار میله ای زیر هم در متلب رسم کنیم، به این صورت عمل می کنیم.
subplot(2,1,1)
bar(x1,y1)
subplot(2,1,2)
bar(x2,y2)
جزئیات بیشتر درباره دستور subplot در متلب رو در آموزش رسم انواع نمودار در متلب توضیح دادیم.