آموزش رسم توابع در پایتون
خوشحالیم که یک بار دیگر با آموزش رسم توابع در پایتون از سری آموزشهای برنامهنویسی پایتون در مجله مکتب خونه همراه شما عزیزان هستیم. با کسب مهارت در این زمینه رسم و طراحی انواع نمودار را به صورت کاملاً حرفهای یاد میگیرید. در این آموزش فرا میگیرید که چگونه یک نمودار ریاضی به صورت بصری را سفارشی سازی کرده و از برنامه نهایی یک فایل قابل اجرا بسازید.
در انتهای این مطلب درک عمیقی از کتابخانه matplotlib کسب میکنید. پس از درک ساختار و زیربنای این library توانایی ساخت نمودارهای بصری و قابل فهم از توابع ریاضی را خواهید داشت. در ادامه برای این که بتوانیم ظاهر زیباتری به نمودار دهیم با Seaborn آشنا میشویم. این کتابخانه بر پایه matplotlib ساخته شده است. اگر میخواهید رسم توابع ریاضی در پایتون را به صورت کاملاً حرفهای بیاموزید این مقاله را از دست ندهید.
نحوه رسم توابع در پایتون با استفاده از Matplotlib
برای ترسیم یک تابع در پایتون با استفاده از کتابخانه Matplotlib، باید محدودهای از مقادیر x و y که با آن تابع مطابقت دارد تعریف شود. برای این کار ابتدا باید تابع مورد نظر خود را به زبان پایتون تعریف کنیم. سپس رنج اعدادی که برای x در نظر داریم را تولید و به تابع پاس میدهیم.
جهت شروع کار لازم است کتابخانههای مورد نیاز import شوند؛ بنابراین Matplotlib pyplot و numpy را با دستورات زیر وارد برنامه میکنیم. از numpy برای اعمال سری اعداد به شکل آرایه در تابع استفاده خواهیم کرد.
# Importing libraries
2
3import matplotlib.pyplot as plt
4
5import numpy as np
در ادامه آموزش رسم توابع در پایتون باید تابع خود را تعریف کنیم. برای سادگی روند آموزش تابع ریاضی انتخابی ما مربع x است؛ بنابراین y = x2 را داریم. این تابع ریاضی را به شکل زیر به Function پایتون تبدیل میکنیم.
# Define a Function
2
3def f(x):
4
5return x ** 2
طبق مراحل تعیین شده در ابتدای آموزش تابع خود را تعریف کردیم. حال نوبت اجرای مرحله دوم یعنی ساخ و ارسال آرایه ساخته شده به تابع میرسد. برای این کار از یکی از توابع کتابخانه numpy به نام linspace استفاده میشود. این تابع این امکان را به ما میدهد که بتوانیم رنجی از اعداد را با فاصله عددی مساوی تولید کنیم. کد مربوطه به شکل زیر خواهد بود.
# Create x and y Ranges
x = np.linspace(-5, 5, 1000)
y = f(x)
در کد بالا:
- -5 عدد شروع رنج تولید شده.
- 5 عدد پایانی رنج تولید شده.
- 1000 تعداد اعضایی است که برای آرایه تولید خواهد شد. یعنی تعداد نقاط نمودار یا همان تعداد xها.
- در خط آخر نیز لیست xها را به تابعی که قبلاً تعریف کردیم پاس میدهیم.
در این مثال ساده از آموزش رسم توابع ریاضی در پایتون یک آرایه را به Function پاس دادیم. در نتیجه یک آرایه یا لیست دریافت خواهیم کرد. حال دادههای مورد نیاز برای ترسیم نمودار را داریم. پس بیایید تابع خود را ترسیم کنیم. کد زیر را به کدهای قبلی اضافه کنید.
# Plot the Data
plt.plot(x, y)
plt.show()
خروجی نهایی برنامه نوشته شده تا اینجا را در تصویر زیر مشاهده میکنید.
در تصویر بالا میبیند که نمودار ما بین اعداد -5 و 5 قرار دارد؛ بنابراین نمودار از جانب محور x محدود شده است. اما محدودیتی برای محور y اعمال نشده. برای اینکه نمودار خود را در هر دو محور محدود کنیم باید کد را به گونهای تغییر دهیم که فرایند تولید تابع زودتر متوقف شود. جهت این کار برنامه خود را به شکل زیر تغییر میدهیم.
# Modify the Axes Limits
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlim(-5, 5)
ax.set_ylim(0, 25)
plt.show()
حالا بیایید بررسی کنیم که در بلوک کد بالا چه کردیم:
- ابتدا نمودار با استفاده از تابع subplots طبق رویکرد شیءگرا اصلاح شد.
- سپس تابع خود را روی محور مختصات رسم کردیم.
- در نهایت، از متدهای set_xlim و set_ylim برای کنترل محدوده ترسیم نمودار استفاده شد.
نمودار ما به شکل زیر تغییر خواهد کرد.
آموزش افزودن Label و Titel به نمودار
در این بخش از آموزش رسم توابع در پایتون قصد داریم به نحوه افزودن label به نمودار بپردازیم. لیبل میتواند کاربردهای متفاوتی داشته باشد. یکی از این کاربردها اشاره به تابع ریاضی نمودار مربوطه است. همچنین گاهی اوقات چند نمودار را در یک محور ترسیم میکنیم. در این موارد میتوان رنگ، عنوان و هر اطلاعات دیگری در مورد نمودارهای رسم شده با این قابلیت چاپ کرد.
ویژگی دیگری که میتوان به نمودار افزود titel نام دارد. کاربرد titel یا همان عنوان کاملاً روش هست. با این قابلیت میتوانیم یک توضیح کلی برای شکل خود بنویسیم. پس کد خود را به شکل زیر تغییر میدهیم.
# Define an Additional Function
2
3def sin(x):
4
5return 5 * np.sin(x)
6
7# Create x and y values
8
9x = np.linspace(-5, 5, 1000)
10
11y1 = f(x) y2 = sin(x)
12
13# Plot both functions
14
15fig, ax = plt.subplots()
16
17ax.plot(x, y, label='f(x)=x**2')
18
19ax.plot(x, y2, label='f(x)=5sin(x)')
20
21ax.set_title('Plotting Functions in Matplotlib', size=14)
22
23ax.set_xlim(-5, 5)
24
25ax.set_ylim(-5, 25)
26
27plt.legend()
28
29plt.show()
کد بالا را به شکل زیر میتوانیم تجزیه و تحلیل کنیم:
- ابتدا تابع دوم خود را تعریف کردیم.
- در مرحله بعدی از هر کدام از توابع خود یک object ساخته و x را که آرایه اعداد ما را نگهداری میکند به آنها پاس دادیم.
- سپس آبجکت شکل و محور را ساختیم.
- جهت تکمیل رسم توابع در پایتون ۲ نمودار خود را با کد ax.plot ساختیم. تفاوت این قسمت از کد با برنامه قبلی این است که علاوه بر ارسال x و y به عنوان پارامتر، یک پارامتر سوم به آنها اضافه کردیم. پارامترهای سوم label=’f(x)=x**2′ و label=’f(x)=5sin(x)’ هستند که همان لیبلها را برای ما چاپ خواهند کرد.
- در نهایت با کد ax.set_title(‘Plotting Functions in Matplotlib’, size=14) یک عنوان با سایز ۱۴ به شکل اضافه شد.
نتیجه کار در تصویر بعدی قابل مشاهده است:
تا این بخش توانستیم یک دستگاه مختصات که دو تابع متفاوت را نمایش میدهد بسازیم. به این شکل خود برچسب و عنوان متناسب اضافه کردیم. تمام آنچه تا الان استفاده کردیم بر اساس تابع plot کار میکردند. اما اگر یادتان باشد قرار بود کتابخانهای با نام Seaborn را هم یاد بگیریم. پس توصیه میکنیم به ادامه مطلب توجه کنید.
پیشننهاد مطالعه: آموزش هک پسورد با پایتون
آموزش رسم توابع در پایتون با کمک Seaborn
بالاخره نوبت آموزش کار با Seaborn شد. به دلیل این که بیشتر قسمتهای کد تکراری هستند از توضیحات اضافی صرف نظر کرده و تنها بخشهای جدید و تغییر کرده را بررسی خواهیم کرد. کد زیر را به دقت تماشا کنید.
import seaborn as sns
2
3import numpy as np
4
5import pandas as pd
6
7import matplotlib.pyplot as plt
8
9def f(x):
10
11return x ** 2
12
13def sin(x):
14
15return 5 * np.sin(x)
16
17x = np.linspace(-5, 5, 1000)
18
19y1 = f(x)
20
21y2 = sin(x)
22
23df=pd.DataFrame(zip(x,y1,y2),columns=['x','y=f(x)','y=5*sin(x)']).set_indx('x')
24
25fig, ax = plt.subplots()
26
27# Plot sns.lineplot() to the ax
28
29sns.set_palette('Set2')
30
31sns.set_style('ticks')
32
33sns.lineplot(df, ax=ax)
34
35ax.set_title('Plotting Functions in Matplotlib', size=14)
36
37ax.set_xlim(-5, 5)
38
39ax.set_ylim(-5, 25)
40
41# Despine the graph
42
43sns.despine()
44
45plt.show()
توضیحات کد بالا:
- کتابخانههای seaborn و pandas را import کردیم.
- توابع خود را ساختیم.
- برای این که بتوانیم عناصر آرایه را بهتر پیمایش کنیم از تابع zip() پایتون استفاده کرده و x و آبجکتهای ساخته شده از توابع را به آن پاس دادیم.
- سپس با استفاده از توابع seaborn جهت ساخت یک استایل مشبک برای نمودار خود استفاده کردیم.
- در نهایت از تابع despine کتابخانه Seaborn برای حذف حاشیههای بالا و راست گراف استفاده شد.
به خروجی نهایی در تصویر زیر توجه کنید.
آموزش رسم نمودار پراکندگی در پایتون
یاد گرفتیم که چطور میتوانیم رسم توابع در پایتون را به سادهترین شکل ممکن انجام دهیم. اما گاهی اوقات نیاز به نمودارهایی با شکلهای دیگر و با کاربردهای متفاوت داریم. نمودار پراکندگی یکی از این اشکال است. برای آموزش ساخت این نوع نمودار از مثالی سادهتر استفاده خواهیم کرد.
۲ لیست داریم با نامهای x و y. مقادیر این لیستها را با استفاده از تابع رندوم تولید میکنیم. در نهایت قبل از نوشتن کد نمایش نمودار باید نوع نموداری که میخواهیم ساخته شود را مشخص کرد. این کار با کد plt.scatter(x, y) ممکن خواهد شد. برنامه را به شکل زیر مینویسیم.
import numpy
2import matplotlib.pyplot as plt
3
4x=numpy.random.normal(5.0, 1.0, 1000)
5y=numpy.random.normal(10.0, 2.0, 1000)
6
7plt.scatter(x,y)
8plt.show()
از برنامه بالا خروجی زیر مورد انتظار است.
کتابخانه matplotlib یکی از ابزارهای قدرتمند پایتون در زمینه ترسیم نمودار محسوب میشود. همانطور که میدانید نمودارها انواع مختلفی دارند که میتوانیم هر کدام را با plot رسم کنیم. برخی از چارتهای دیگر که ما این کتابخانه میتوانیم ترسیم کنیم به شرح زیر هستند.
- ترسیم نمودار میلهای
- ترسیم نمودار هیستوگرام
- ترسیم نمودار سه بعدی
پیشنهاد مطالعه: نحوه انجام ضرب در پایتون
کلام پایانی
پایتون یکی از محبوبترین زبانهای برنامه نویسی در جهان است. رسم توابع در پایتون تنها گوشهای از قابلیتهای فوقالعاده این زبان محسوب میشود. هدف اصلی این مطلب معرفی کتابخانه matplotlib بود. برای مباحث پیشرفتهتر میتوانید از منابع آموزش مکتب خونه استفاده کنید. حرف آخر این که نظرات و پیشنهادات خود را با ما در میان بگذارید. با این کار انگیزه ما را برای ادامه مسیر تقویت خواهید کرد.
آموزش برنامه نویسی با پایتون در مکتب خونه
ما در مکتب خونه تمام تلاش خود را به کار میگیریم تا بهترین کیفیت آموزشی را برای کاربران خود فراهم کنیم. امیدواریم که تا امروز به این مهم دست پیدا کرده باشیم. برنامهنویسی یکی از زمینههای آموزشی مورد توجه مجموعه ماست. در میان زبانهای برنامهنویسی زبان پایتون کاربران زیادی را به خود جذب میکند؛ بنابراین از شما خواننده محترم دعوت میکنیم حتماً از دورههای مکتب خونه در زمینه آموزش برنامهنویسی با پایتون استفاده کنید.