رسم انواع نمودارها با matplotlib- بخش دوم
مقدمه
در جلسه دوم از آموزش کتابخانه matplotlib قصد داریم در مورد Scatter Plot ها صحبت کنیم. ما در جلسه قبل به بررسی Histogram و نمودارهای میله و مفاهیم پایه matplotlib پرداختیم. پیشنهاد می شود برای درک بهتر این جلسه ، حتما جلسه قبل را مطالعه فرمایید :
رسم Scatter plot با matplotlib
[post_shop]
نمودار Scatter Plot نموداری است که به جای رسم یک خط که رابطه ی بین دو متغییر را نشان می دهد ، از نقطه ها استفاده می کند. هر کدام از این نقطه ها مربوط به یک x و y مشخص است که از داده ها بدست آمده اند. نمونه ای از یک Scatter Plot را در زیر مشاهده میکنید :
خوبی Scatter Plot این است که میتوانیم به کمک آن همبستگی بین دو متغیر را بدست آوریم و ببینیم که دو متغیر چه رابطه ای با یکدگیر دارند. مثلا با افزایش مقدار یک متغیر ، متغیر دوم اضافه می شود یا کم می شود یا …
چگونه میتوانیم به کمک matplotlib ، یک Scatter Plot رسم کنیم؟
قبل از هر چیز واضح است که برای رسم یک Scatter plot تنها به یک سری نقطه گسسته نیاز داریم. یعنی به یک لیست که x ها را مشخص می کند و به لیستی دیگر که y متناظر با x ها را تعیین می کند. همچنین برای رسم Scatter Plot به کمک matplotlib ، تنها کافی است که از متد Scatter استفاده کنید. کد زیر نمونه ای از یک Scatter plot ساده برای ما رسم می کند:
import matplotlib.pyplot as plt x = [1,2,3,4,5,6,7,8] y = [5,4,7,6,2,9,1,6] plt.scatter(x,y , label="Test scatter",color='r',marker='*',s=100) plt.xlabel('x') plt.ylabel('y') plt.title('Scatter plot graph') plt.legend() plt.show()
در شکل زیر کد بالا به صورت دقیق بررسی شده است :
همانطور که مشاهده میکنید ما در متد Scatter از 3 آرگومان اضافی استفاده کرده ایم که البته در بالا توضیح داده شده است ولی برای درک بهتر ، در اینجا نیز مجددا توضیح می دهیم :
- آرگومان color : با کمک این آرگومان میتوانیم رنگ نمودار رسم شده را مشخص کنیم. r برگرفته از red است و منظورمان این است که میخواهیم رنگ نمودار را قرمز رسم کنیم. (اطلاعات بیشتر در مورد رنگ نمودارها را میتوانید از این لینک دریافت کنید.)
- آرگومان marker : با کمک این آرگومان میتوانیم مشخص کنیم که به جای نقطه که در حالت معمول در scatter plot رسم میکنیم ، چه چیز دیگری رسم شود. در اینجا ما از * استفاده کرده ایم و ترجیح داده ایم که برای نمایش بهتر از این علامت به جای نقطه ها استفاده شود.
- آرگومان s : با این آرگومان اندازه marker ها را مشخص میکنیم. یعنی در واقع تعیین میکنیم که * ما که با آرگومان قبل مشخص شد ، با چه اندازه ای رسم شود.
پس از اجرای این کد نتیجه به صورت زیر خواهد بود:
رسم pie chart با matplotlib
قبل از هر چیز میدانیم که Pie Chart (یا نمودار دایره ای)در واقع یک نمودار دایره ای است که تاثیر حضور یک بخش نسبت به کل را میتوانیم بسنجیم. مثلا در شکل زیر که مربوط به نمره دانش آموزان می باشد ، درصد تعداد کسانی که نمره B گرفته اند برابر با 42 درصد می باشد.
همانطور که در بالا نیز مشاهده میکنید ، یک Pie Chart از چند بخش مهم زیر تشکیل شده است :
- تعداد اعضای مربوط به هر کدام از بخش های مختلف (مثلا در نمره های بالا تعداد افراد مربوط به نمره B برابر 12 نفر است.)
- برچسب هایی برای هر کدام از بخش ها که نشان دهد هر کدام از درصد های بالا مربوط به چه بخشی است.
حال میتوانیم یک نمودار دایره ای رسم کنیم. ابتدا کد مربوط به رسم را ببینید تا در ادامه در مورد آن توضیح دهیم :
import matplotlib.pyplot as plt slices = [7,2,2,13] activities = ['sleeping', 'eating','working','playing'] cols = ['c','m','y','g'] plt.pie(slices, labels= activities, colors=cols) plt.title('pie chart test') plt.show()
در شکل زیر این کد را توضیح داده ایم :
با اجرای کد بالا نتیجه به صورت زیر خواهد بود :
اگر دقت کنید شکل بالا کمی بی روح می باشد. قصد داریم با اضافه کردن 3 پارامتر ، نمودار بالا را کمی زیباتر کنیم:
- افزودن سایه به شکل با کمک پارامتر shadow
- برجسته کردن یکی از بخش های با کمک explode
- درصد گذاری بر روی بخش ها با پارامتر autopct
در کد زیر این پارامترها به کد بالا اضافه شده اند :
import matplotlib.pyplot as plt slices = [7,2,2,13] activities = ['sleeping', 'eating','working','playing'] cols = ['c','m','y','g'] plt.pie(slices, labels= activities, colors=cols,shadow=True, explode = (0,0.3,0,0),autopct= '%1.1f%%') plt.title('pie chart test') plt.show()
توضیحات مربوط به کد بالا در شکل زیر آورده شده است :
حال با اجرای کد نتیجه به صورت زیر خواهد بود :
همانطور که مشاهده میکنید بر روی تکه ها یا slice ها به صورت اتوماتیک درصد گذاری انجام شده است. علاوه بر آن در کنار نمودار یک سایه نیز ایجاد شده است.
ضمن آنکه قسمت eating به خاطر استفاده از پارامتر explode کمی برجسته تر نشان داده شده است.
رسم Stack plot با matplotlib
قبل از هر چیز باید توضیح دهیم که منظور از stackplot چیست.
stackplot ها تقریبا همان pie chart ها می باشند که زمان یا یک بازه در آنها مطرح می شود. شکل زیر را ببینید:
در شکل بالا قصد داشتیم که چهار فعالیت eating و working و playing و sleeping را برای 5 روز مختلف با یکدگیر مقایسه کنیم. از شکل بالا مشخص است که فعالیت eating نسبت به بقیه حجم کمتری را در یک روز به خودش اختصاص داده است.
در واقع همانطور که مشاهده میکنید در ابتدا یکی از نمودارها با توجه به دیتای آن به صورت معمول رسم می شود. سپس نمودار مربوط به فعالیت دوم ، بر روی نمودار اول رسم می گردد. یعنی دیتاهای آن با دیتاهای نمودار پایینی خودش جمع می شود و رسم می شود. توجه داشته باشید که هدف ما مقایسه بین بخش های مختلف است. به کمک stackplot نیز این مقایسه ها به خوبی مشخص می شوند. (نکته ای که باید به آن توجه کنید این است که در شکل بالا ما فرض کرده ایم فرد مورد نظر فقط همان چهار فعالیت را انجام می دهد و باید مجموع ساعت های فعالیت های انجام شده او برابر با 24 ساعت باشد که یک روز می باشد. به همین خاطر اخرین نمودار یک نمودار ثابت می باشد که همه اعدادش برابر با 24 می باشد. )
حال بیایید و نمودار بالا را به کمک matplotlib رسم کنیم. ما برای رسم این نمودار به پارامترهای زیر نیاز داریم :
- پارامتر مربوط به محور x که در اینجا قصد داریم 5 روز مختلف را با یکدگیر مقایسه کنیم. پس یک لیست از 1 تا 5 برای محور x ها را تعیین می کنیم.
- پارامترهای مربوط به محور y ها. هر کدام از این دسته بندی ها باید یک سری دسته بندی مربوط به خودشان را داشته باشند.
به کمک پارامترهای بالا میتوانیم کد مربوط به این stack plot را به صورت زیر بنویسیم:
import matplotlib.pyplot as plt days = [1,2,3,4,5] sleeping= [7,8,6,11,7] eating = [2,3,4,3,2] working = [7,8,7,2,2] playing = [8,5,7,8,13] cols = ['m','c','r','g'] lab= ['sleeping','eating','working','playing'] plt.stackplot(days, sleeping, eating, working, playing, colors= cols, labels=lab) plt.xlabel('x') plt.ylabel('y') plt.title('Stack plot graph') plt.legend() plt.show()
در شکل زیر این کد را به صورت دقیق بررسی کرده ایم : (نکته : تنها بخش هایی توضیح داده می شوند که در بخش قبل توضیح نداده ایم.)
[/post_shop]
نتیجه اجرای کد بالا به صورت زیر می باشد:
به پایان این جلسه رسیدیم. مثل همیشه تمرینات زیر برای درک بهتر این جلسه ارایه می شوند. حتما انها را انجام دهید و کدهای خود را در کامنت ها قرار دهید تا سایر دوستان که دچار مشکل هستند نیز از کدهای شما استفاده کنند.
تمرین 1 : در متد pie پارامتری به نام Startangle وجود دارد. بررسی کنید که این پارامتر چه کاربردی دارد.
تمرین 2 : به کمک matplotlib ، نموداری شبیه به شکل زیر رسم کنید:
برای اطلاع از مطالب جدیدی که در سایت منتشر می شوند ، میتوانید ما را در تلگرام و یا اینستاگرام دنبال کنید:
دیدگاهتان را بنویسید