آموزش رسم نمودار در پایتون با کتابخانه Matplotlib
شما روزانه حجم عظیمی از داده ها را تولید می کنید. بخش مهم تجزیه و تحلیل داده ها، تجسم است. در طی چند سال گذشته انواع ابزارهای گرافیکی، توسعه یافته است. در ادامه در مقاله ی رسم نمودار در پایتون با کتابخانه Matplotlib با ما همراه باشید.
با توجه به محبوبیت Python به عنوان زبانی برای تجزیه و تحلیل داده ها، این آموزش بر رسم نمودار در پایتون با استفاده از یک کتابخانه محبوب Matplotlib تمرکز دارد. در ادامه نیز نگاهی به مقاله ی نحوه ی رسم نمودار در متلب نیز داریم.
رسم نمودار در پایتون با کتابخانه Matplotlib
ماتپلت لیب یک کتابخانه بزرگ است، که می تواند برای یک مبتدی کمی پیچیده باشد،حتی اگر پایتون یکی از زبانهای نسبتاً راحت باشد. در حالی که تهیه نقشه با استفاده از چند خط کد آسان است، درک این موضوع که در واقع در بخش انتهایی این کتابخانه ادامه دارد دشوار است.
این آموزش مفاهیم اصلی Matplotlib را توضیح می دهد تا فرد بتواند پتانسیل کامل آن را کشف کند.
معرفی به pyplot
matplotlib.pyplot مجموعه ای از توابع سبک فرمان است که باعث می شود Matplotlib مانند MATLAB کار کند. هر تابع pyplot تغییراتی در یک شکل ایجاد می کند: مثلاً، یک شکل را ایجاد می کند، یک منطقه نقشه را در یک شکل ایجاد می کند، بعضی از خط ها را در یک نقشه نقشه کشیده، طرح را با برچسب ها و غیره تزئین می کند.
در matplotlib.pyplot حالتهای مختلف در فراخوانی های عملکردی حفظ می شوند، به طوری که مواردی مانند شکل فعلی و منطقه نقشه برداری را نگه می دارد، و توابع نقشه برداری به محورهای فعلی هدایت می شود (لطفا توجه داشته باشید که “محورها” در اینجا و در اکثر نقاط در اسناد مربوط به قسمت محورهای یک شکل است و نه اصطلاح دقیق ریاضی برای بیش از یک محور).
توجه داشته باشید
APP pyplot عموما در Matplotlib نسبت به API شی گرا انعطاف پذیر است. بسیاری از تماسهای عملکردی که در اینجا مشاهده می کنید می توانند به عنوان روشهایی از یک شیء Axes نیز خوانده شوند. توصیه می کنیم برای دیدن چگونگی عملکرد این آموزشها و مثالها را مرور کنید.
ایجاد تجسم با pyplot بسیار سریع است:
import matplotlib.pyplot as plt plt.plot([1, 2, 3, 4]) plt.ylabel('some numbers') plt.show()
ایجاد تجسم خطی با Matplotlib
شاید تعجب کنید که چرا محور x از 0-3 و محور y از 1-4 متغیر است. اگر یک لیست یا آرایه واحد به فرمان () در طرح () ارائه دهید، Matplotlib فرض می کند که دنباله ای از مقادیر y است، و بطور خودکار مقادیر x را برای شما تولید می کند. از آنجا که دامنه های پایتون با 0 شروع می شود، بردار x به طور پیش فرض دارای طول Y است اما با 0 شروع می شود. از این رو داده های x [0،1،2،3] هستند.
ویدیو پییشنهادی : آموزش پایتون جادی
() Plot یک دستور همه کاره است و تعداد آرگومان های دلخواه را در اختیار خواهد گرفت. به عنوان مثال، برای ترسیم x در مقابل y، می توانید دستور را صادر کنید:
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
قالب بندی طرح خود
برای هر جفت آرگومان x ، y ، یک آرگومان سوم اختیاری وجود دارد که رشته فرمت است که رنگ و نوع خط نقشه را نشان می دهد. حروف و نمادهای رشته فرمت از MATLAB است، و شما یک رشته رنگ را با یک رشته به سبک خط جمع می کنید. رشته فرمت پیش فرض “b-” است، که یک خط آبی جامد است. به عنوان مثال، برای ترسیم موارد فوق با دایره های قرمز در Matplotlib، شما صادر می کنید:
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro') plt.axis([0, 6, 0, 20]) plt.show()
نمودار نقطه ای با matplotlib
مستندات طرح () را برای لیست کاملی از سبک های خط و رشته های قالب مشاهده کنید. دستور() ax در مثال بالا لیستی از [xmin، xmax، ymin، ymax] را می گیرد و نمای محورها را مشخص می کند.
اگر Matplotlib به کار با لیست محدود می شد، برای پردازش عددی کاملاً بی فایده بود. به طور کلی از آرایه های numpy استفاده خواهید کرد. در حقیقت، تمام سکانس ها به صورت داخلی به آرایه های شماره گیر تبدیل می شوند. مثال زیر ترسیم چندین خط با سبک های فرمت مختلف در یک دستور با استفاده از آرایه ها را نشان می دهد.
import numpy as np # evenly sampled time at 200ms intervals t = np.arange(0., 5., 0.2) # red dashes, blue squares and green triangles plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^') plt.show()
ترسیم با رشته های کلمات کلیدی
مواردی وجود دارد که داده ها را با فرمت در اختیار شما قرار می دهد که به شما امکان دسترسی به متغیرهای خاص با رشته ها را می دهد. به عنوان مثال، با numpy.recarray یا pandas.DataFrame.
Matplotlib به شما امکان می دهد آرگومان کلمه کلیدی داده ها را برای اشیا ارائه دهید. در صورت ارائه، ممکن است اشکالی با رشته های مربوط به این متغیرها ایجاد کنید.
data = {'a': np.arange(50), 'c': np.random.randint(0, 50, 50), 'd': np.random.randn(50)} data['b'] = data['a'] + 10 * np.random.randn(50) data['d'] = np.abs(data['d']) * 100 plt.scatter('a', 'b', c='c', s='d', data=data) plt.xlabel('entry a') plt.ylabel('entry b') plt.show()
خواص خط کنترل
خطوط دارای بسیاری از خصوصیات هستند که می توانید آنها را تنظیم کنید: پهنای باند، سبک خط، رنگ خط و غیره. روش های مختلفی برای تنظیم ویژگی های خط وجود دارد.
از آرگومان های کلمه کلیدی استفاده کنید:
plt.plot(x, y, linewidth=2.0)
اگر از روش های تنظیم کننده نمونه Line2D استفاده کنید. نقشه لیستی از اشیاء Line2D را برمی گرداند. به عنوان مثال، .line1, line2 = plot(x1, y1, x2, y2) در کد زیر فرض خواهیم کرد که ما فقط یک خط داریم به طوری که لیست برگشت شده از طول 1 باشد. ما از بسته بندی tuple با خط استفاده می کنیم تا اولین عنصر آن لیست را بدست آوریم:
line, = plt.plot(x, y, '-') line.set_antialiased(False) # turn off antialiasing
از دستور setp () استفاده کنید. در مثال زیر از یک دستور به سبک Matplotlib برای تنظیم چندین ویژگی در لیست خطوط استفاده شده است. setp به طور شفاف با لیستی از اشیاء یا یک شی واحد کار می کند. می توانید از آرگومان های کلمه کلیدی پایتون یا جفت های string/value به سبک MATLAB استفاده کنید:
lines = plt.plot(x1, y1, x2, y2) # use keyword args plt.setp(lines, color='r', linewidth=2.0) # or MATLAB style string value pairs plt.setp(lines, 'color', 'r', 'linewidth', 2.0)
کار با چندین شکل و محور
MATLAB و pyplot مفهوم شکل فعلی و محورهای فعلی را دارند. تمام دستورات ترسیم در مورد محورهای فعلی اعمال می شود. تابع () gca محورهای فعلی (Matplotlib.axes.Axes) را برمی گرداند، و () gcf شکل فعلی را باز می گرداند (matplotlib.figure.Figure). به طور معمول، لازم نیست نگران این موضوع باشید، زیرا همه این موضوعات در پشت صحنه مراقبت می شوند. در زیر یک اسکریپت برای ایجاد دو زیرمجموعه وجود دارد.
def f(t): return np.exp(-t) * np.cos(2*np.pi*t) t1 = np.arange(0.0, 5.0, 0.1) t2 = np.arange(0.0, 5.0, 0.02) plt.figure() plt.subplot(211) plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k') plt.subplot(212) plt.plot(t2, np.cos(2*np.pi*t2), 'r--') plt.show()
کار با چندین محور در matplotlib
فرمان () figure در مثال بالا اختیاری است زیرا figure(1) بطور پیش فرض ایجاد می شود، دقیقاً به عنوان پیش فرض (111) اگر به صورت دستی هیچ محوری را مشخص نکنید به طور پیش فرض ایجاد می شود. command در فرمان subplot اگر numrows * numcols <10 باشد اختیاری است. بنابراین(subplot (211 با (1،1 ، subplot (2) یکسان است.
شما در Matplotlib می توانید تعداد دلخواهی از خرده های فرعی و محوری ایجاد کنید. اگر می خواهید محورها را به صورت دستی قرار دهید، از دستور () axes استفاده کنید، که به شما امکان می دهد مکان را به عنوان محورها ([سمت چپ ، پایین ، عرض ، ارتفاع]) مشخص کنید که در آن همه مقادیر به شکل کسری هستند. Axes Demo را برای نمونه ای از قرار دادن محورها به صورت دستی و Basic Subplot Demo نمونه برای مثال با تعداد زیادی زیرشاخه هستند.
شما می توانید با استفاده از چندین figure() تعداد بیشتری شکل در در صفحه را ایجاد کنید. البته، هر شکل می تواند حاوی محورها و زیرشاخه هایی باشد هر طور که شما صلاح بدانید ذر کد زیر به این موضوع میپردازیم.
import matplotlib.pyplot as plt plt.figure(1) # the first figure plt.subplot(211) # the first subplot in the first figure plt.plot([1, 2, 3]) plt.subplot(212) # the second subplot in the first figure plt.plot([4, 5, 6]) plt.figure(2) # a second figure plt.plot([4, 5, 6]) # creates a subplot(111) by default plt.figure(1) # figure 1 current; subplot(212) still current plt.subplot(211) # make subplot(211) in figure1 current plt.title('Easy as 1, 2, 3') # subplot 211 title
می توانید شکل فعلی را با تابع () clf و محورهای فعلی را با () claپاک کنید. اگر احساس مشکلی می کنید نگران نباشید چون که حالت¬ها در کتابخانه Matplotlib (به طور خاص تصویر فعلی، شکل و محورها) در پشت صحنه برای شما حفظ می شوند، ناامید نشوید.
این فقط یک روش حالتی خاص در اطراف یک API شی گرا است که می توانید به جای آن استفاده کنید. امیدوارم مطالب مهمی را در مورد رسم نمودار در پایتون با کتابخانه Matplotlib را در اختیار شما قرار داده باشیم.
بسیار عالی
وقتتون بخیر
سپاسگذاریم که با مجله مکتوب همراه هستید.
عالیییییی
سلام
ممنون از همراهی شما دوست عزیز
متشکرم عالی بود
سلام
ممنون از همراهی شما
سلام و درود با تشکر از مطالب خوبی که در این سایت وجود دارد.