خانه » ساخت نمودار و مصورسازی در matplotlib در پایتون
مصورسازی در matplotlib

ساخت نمودار و مصورسازی در matplotlib در پایتون

مصورسازی داده ها نمایش بصری (یا گرافیکی) داده ها برای بدست آوردن دیدهای مفید (به عنوان مثال روندها و الگوها) در داده ها و ساده تر کردن روند تجزیه و تحلیل داده ها است. مصورسازی و ساخت نمودارهای آماری با کیفیت بالا ، جذاب ، تعاملی و آموزنده (2 بعدی و ۳ بعدی) توسط کتابخانه های مختلف پایتون همچون matplotlib, pandas, numpy , seaborn به راحتی پذیر است .که ما تمامی موارد را در چندین بخش بررسی خواهیم کرد در این قسمت به مصورسازی در matplotlib می پردازیم.
هدف از مصورسازی داده ها ، درک سریع و واضح داده ها در نگاه اول و نمایان ساختن آنها برای درک اطلاعات است.

برخی از کتابخانه های مشهور مصورسازی موجود در پایتون

Matplotlib : مصور سازی با matplotlib که یکی از کتابخانه های محبوب مصورسازی است که به ما امکان می دهد گرافیکی با کیفیت بالا با طیف وسیعی از نمودارها مانند نمودارهای پراکندگی ، نمودارهای خطی ، نمودارهای میله ای ، هیستوگرام ها و نمودارهای دایره ای ایجاد کنیم.
Seaborn : یکی دیگر از کتابخانه های مصورسازی داده با طراحی های جذاب است که برپایه Matplotlib ساخته شده است . علاوه بر این ، تعداد خطوط کد مورد نیاز برای تولید نتیجه مشابه Matplotlib را کاهش می دهد.
Pandas : کتابخانه عالی دیگری است که برای تجزیه و تحلیل داده ها (دستکاری داده ها ، تجزیه و تحلیل سری های زمانی و غیره) در پایتون موجود است. Pandas Visualization (ساخته شده برمبنای Matplotlib) ابزاری از کتابخانه Pandas است که به ما امکان می دهد تا نمایشی بصری از دیتا فریم ها (داده های تراز شده به شکل جدول ستون ها و ردیف ها) و سری ها (آرایه ای یک بعدی با برچسب با قابلیت نگهداری داده ها از هر نوعی) را خیلی سریعتر و راحت تر داشته باشیم.
Plotly : کتابخانه ای برای ایجاد نمودارهای تعاملی و چند بعدی است که روند تجزیه و تحلیل داده ها را با ارائه مصورسازی بهتر داده ها آسان می کند.

درک اصول Matplotlib

چهارچوب نمودار Matplotlib

Figure: کل منطقه ای که همه چیز در آن ترسیم می شود. که می تواند شامل چندین نمودار باشد.

Axes: ناحیه ای که در آن نمودار کشیده می شود در هر figure می توان چند axes داشت.

Axis: محور های هر نمودار را نشان می دهد (محور X و محور Y در شکل بالا ذکر شده است) در نمودار چند بعدی می توان بیش از دو محور در نمودار وجود داشته باشد.

Plot title: عنوان در مرکز بالای نمودار(axes) قرار می گیرد.

وارد کردن مجموعه داده

در این مقاله ، ما از مجموعه داده های Iris (به عنوان مثال) استفاده خواهیم کرد ، که رایگان است و معمولاً مورد استفاده قرار می گیرد.
ما می توانیم این مجموعه داده را به دو روش وارد کنیم:

1. استفاده از کتابخانه Scikit-learn:

بدون دانلود فایل csv ، می توانیم مستقیماً مجموعه داده ها را در فضای کار با استفاده از کتابخانه sci-kit learn موجود در پایتون وارد کنیم.

ورود مجموعه داده در پایتون

2. استفاده از کتابخانه Pandas:

با استفاده از کد فوق (با وارد کردن کتابخانه Pandas) و دانلود csv مجموعه داده می توانیم داده ها را در فضای کاری خود وارد کنیم. تصویر زیر پنج نمونه اول مجموعه داده iris است:

مجموعه داده iris

از هر دو روش فوق می توان برای وارد کردن مجموعه داده و ساخت نمودار استفاده کرد ، اما ما به دلیل خوانایی بهتر داده ها از روش دوم استفاده خواهیم کرد (همانطور که تفاوت نتایج خروجی هر دو روش را مشاهده می کنید) .

ما با وارد کردن کتابخانه با استفاده از کد زیر شروع می کنیم:

کار با Matplotlib

در این کتابخانه انواع مختلفی برای ترسیم نمودار موجود است.

نمودار خطی

نمودارهای خطی یکی از متداول ترین ابزارهای مصورسازی در matplotlib است ،که از نقاط داده که بصورت مستقیم به هم متصل شده‌اند تشکیل می‌شود تا به ایجاد یک تصویر از اطلاعات کمک کند. این یکی از ساده ترین نمودارهایی است که می توانیم با استفاده از پایتون بسازیم.

در اینجا ، با استفاده از تابع() linspace نامپای (numpy) نقاط داده ای تولید می کنیم و آنها را در متغیر x ذخیره می کنیم و مربع مقادیر x را محاسبه می کنیم و آنها را در متغیر y دیگر ذخیره می کنیم.

برای مصورسازی توسط نمودار خطی از تابع () plt.plot و از () plt.show در matplotlib استفاده خواهیم کرد.

نمودار خطی ساده با matplotlib

ما می توانیم برخی از توابع دیگر را به نمودار خود اضافه کنیم تا تفسیر آن بسیار ساده تر شود.
برای افزودن برچسب: برچسب محور x و برچسب محور y به ترتیب از توابع () plt.xlabel و () plt.ylabel استفاده خواهیم کرد.
همچنین می توانیم با استفاده از تابع () plt.title عنوانی به نمودار خود بدهیم.
نمودار را می توان با فراخوانی تابع plt.grid (True) مشبک کرد (تفسیر داده ها را آسان تر می کند).

با افزودن این توابع ، نمودار بسیار خواناتر شده و تجزیه و تحلیل آن آسان تر می شود.

نمودار خطی مشبک در matplotlib

ما می توانیم بیش از یک خط به نمودار خود اضافه کنیم و آنها را با استفاده از رنگ های مختلف و برخی ویژگی های دیگر متمایز کنیم:

در کد بالا ، ما متغیر دیگری z = x ** 3 (z = x³) اضافه کرده و سبک و رنگ خط را تغییر داده ایم.
برای تغییر رنگ یک خط در نمودار خطی ، باید پارامتر “”= color را در تابع () plt.plot اضافه کنیم.
برای تغییر سبک یک خط در نمودار خطی ، باید پارامتر “”= linestyle را در تابع ()plt.plot اضافه کنیم (یا به سادگی می توانیم “*” یا “- -” و غیره را اضافه کنیم).

نمودار خطی با ۲ خط در matplotlib

این امر استخراج اطلاعات و مقایسه متغیرها را آسان تر می کند.
به همین ترتیب ، ما می توانیم نمودارهایی برای توابع ریاضی نیز ایجاد کنیم:

در اینجا ، ما یک نمودار برای (x)sin و cos (x) ایجاد کرده ایم.
ما می توانیم با استفاده از توابع plt.xlim (lower_limit ، upper_limit) برای محور x و plt.ylim (lower_limit ، upper_limit) برای محور y محدودیت محورها را تنظیم کنیم.
ما می توانیم با تابع () plt.legend برچسب اضافه کنیم ، این برچسب به شما کمک می کند تا مشخص کنید کدام خط برای کدام تابع است.

نمودار خطی (x)sin و cos (x) در matplotlib

نمودارهای چندگانه

برای ایجاد نمودارهای جداگانه در همان شکل(figure) می توان از تابع plt.subplots (num_rows ، num_cols) استفاده کرد. در اینجا جزئیات هر نمودار می تواند متفاوت باشد.

تابع () plt.sublots یک figureو تعداد نمودارهای آن را مشخص می کند که با پارامتر اول و دوم می توانیم تعداد ستون ها و ردیف ها را مشخص کنیم. همچنین می توانیم با استفاده از آرگومان gridspec_kw = {‘hspace’:، ‘wspace’:} فاصله بین نمودارها را تغییر دهیم. پس از آن ، به سادگی با استفاده از شماره index برای نمودار می توان نمودارها را به راحتی رسم کرد.

نمودار چندگانه در matplotlib

نمودار پراکندگی

این نوع نمودار از “نقطه” برای نشان دادن داده های عددی متغیرهای مختلف استفاده می کند.
از نمودارهای پراکندگی می توان برای تحلیل تأثیر یک متغیر بر متغیرهای دیگر استفاده کرد. (ما می توانیم از هر تعداد متغیر که می خواهیم برای رسم استفاده کنیم.)
ما برای ایجاد نمودار از تابع() dataset_name.plot در matplotlib استفاده خواهیم کرد و در پارامترها ، “kind = “scatter همراه با برچسب برای محور x و محور y اعمال خواهیم کرد. نمونه ذکر شده در مصورسازی زیر (مجموعه داده iris) را بررسی کنید.

در اینجا ، ما در حال مقایسه طول و عرض گلبرگ گونه های مختلف گل های موجود در مجموعه داده ها هستیم.

نمودار پراکندگی در matplotlib

اما ، در اینجا تجزیه و تحلیل و استخراج اطلاعات از این نمودار برای ما بسیار دشوار است زیرا ما نمی توانیم بین گروه های حاضر تفاوت قائل شویم.
بنابراین اکنون ، ما روش دیگری را امتحان خواهیم کرد که مشکل ما را حل خواهد کرد. در این روش از() plt.scatter برای ایجاد نمودار پراکندگی استفاده خواهیم کرد.
برای تغییر رنگ نقاط بر اساس گونه های گل ، می توانیم یک دیکشنری با ذخیره رنگ های مربوط به نام گونه ها ایجاد کنیم. با استفاده از حلقه for یک نمودار پراکندگی از سه گونه مختلف (هر یک با رنگ متفاوت نشان داده می شود) ایجاد می کنیم.

این نمودار ایجاد شده بسیار بهتر از نمودار قبلی است. تشخیص گونه ها آسان تر شده و برای تجزیه و تحلیل آسانتر اطلاعات خوبی می دهد.

نمودار پراکندگی با رنگ های مختلف در matplotlib

نمودار میله ای

از نمودارهای میله ای matplotlib می توان برای مقایسه متغیرهای کیفی در مصورسازی استفاده کرد.

در اینجا ما از مجموعه iris برای مقایسه تعداد گونه های مختلف گل استفاده می کنیم (با اینکه می دانیم برابر با پنجاه هستند). برای یافتن تعداد هر گونه منحصر به فرد در مجموعه داده ، از تابع() value_counts استفاده می کنیم. species و count در کد ما نام هر گونه منحصر به فرد (تابعindex.) و فراوانی هر گونه را ذخیره می کند (تابع values.)

نمودار میله ای در matplotlib

این ابتدایی ترین نوع نمودار میله ای است ، شما می توانید عرض میله ها را تغییر دهید (با استفاده از =width) یا یک نمودار میله ای تجمعی ایجاد کنید (با استفاده از پارامتر bottom).

نمودار جعبه ای

نمودارهای جعبه ای توزیع داده ها را بر اساس کوچکترین مقدار، چهارک اول ، میانه ، چهارم سوم و بزرگترین مقدار نمونه ترسیم می کند. این نمودار در مصورسازی می تواند به ما کمک کند داده ها را تجزیه و تحلیل کنیم تا نقاط دور افتاده را پیدا کنیم.

ما ستون گونه (species) را در اینجا حذف کرده ایم زیرا فقط طول گلبرگ ، عرض گلبرگ ، طول کاسبرگ ، عرض کاسبرگ گلهای مجموعه داده Iris را مقایسه می کنیم. نمودار جعبه ای را با استفاده از تابع ()boxplot ایجاد می کنیم.

نمودار جعبه ای در matplotlib

نمودار هیستوگرام

برای نمایش توزیع فراوانی (یا می توان گفت توزیع احتمال) داده ها از هیستوگرام استفاده می شود. برای ساخت نمودار هیستوگرام در matplotlib باید از تابع() plt.hist استفاده کنیم و همچنین می توان بازه ها (bins) را برای نمودار تعریف کرد (یعنی شکستن کل دامنه به یک سری بازه ها و محاسبه تعداد مقادیر افتاده در هر بازه).

هیستوگرام ها نوع خاصی از نمودار میله ای هستند.

نمودار هیستوگرام در matplotlib

نمودار میله خطا

نوار خطا ابزاری عالی برای کشف تفاوت آماری بین گروه داده ها با ارائه تصویری از تغییر در داده ها است. این ابزار matplotlib در مصورسازی کمک می کند تا خطا و دقت در روند تجزیه و تحلیل داده (و تعیین کیفیت مدل) مشخص شود.

برای ترسیم میله های خطا ، ما باید از تابع() errorbar استفاده می کنیم که x و y مکان نقطه داده هستند ، yerr و xerr اندازه میله های خطا را تعریف می کنند (در این کد ما فقط از yerr استفاده می کنیم).
ما همچنین می توانیم سبک و رنگ میله های خطا را با استفاده از پارامتر fmt تغییر دهیم (مانند اینکه سبک را روی نقطه ها ’o’ در این مثال خاص قرار می دهیم) ، ecolor برای تغییر رنگ نقاط و پارامتر color برای تغییر رنگ خطوط عمودی .
با افزودن پارامتر “”=loc در تابع () plt.legend می توانیم موقعیت برچسب legend را در نمودار تعیین کنیم.

نمودار حرارتی

از نمودار حرارتی برای نشان دادن داده های کیفی در قالب “نمودار تصویری کدگذاری شده با رنگ” (مقادیر موجود در داده ها به عنوان رنگ نشان داده می شوند) استفاده می شود تا ارتباط ویژگی های داده ها (تجزیه و تحلیل خوشه ای) پیدا شود. با کمک ساخت نمودار های حرارتی در matplotlib ، می توانیم یک تجزیه و تحلیل سریع و عمیق از نظر بصری داشته باشیم.

در این مثال ، ما از مجموعه داده iris برای ایجاد نمودار حرارتی استفاده می کنیم. تابع ()corr یک تابع دیتافریم pandas است که برای یافتن همبستگی در مجموعه داده استفاده می شود. نمودار حرارتی با استفاده از تابع ()imshow ایجاد می شود ، cmap (برای تنظیم سبک و رنگ طرح)، برای افزودن میله رنگی از تابع ()figure.colorbar استفاده می کنیم. و سرانجام برای افزودن حاشیه نویسی (مقادیری که می توانید در بلوک های رنگی مشاهده کنید) از دو حلقه for استفاده کرده ایم.

نمودار حرارتی در matplotlib

نمودارهای دایره ای (پای)

نمودار دایره ای عموما برای نمایش سهم ها، بصورت عددی و درصدی استفاده می شود. مثلا نمایش میزان سهم هر یک از گل ها در مجموعه داده iris

برای ترسیم نمودار دایره ای باید از تابع () plt.pie استفاده کنیم. برای دادن جلوه سه بعدی به نمودار از پارامتر shadow = True استفاده کرده ایم ، پارامتر explode برای جدا کردن یک دسته و برای نمایش درصد هر دسته باید از پارامتر autopct استفاده کنیم. برای متناسب بودن دایره می توان از تابع plt.axis(‘equal’) استفاده کرد.

در صورتی که می خواهید در این زمینه بیشتر مطالعه کنید ما به شما سایت اصلی matplotlib را پیشنهاد میکنیم تا بتوانید با انواع نمودار به تفصیل آشنا شوید. همچینین در صفحه گروه مطالب مصورسازی در علم داده در سایت ما می توانید مصور سازی با ابزار های مختلف آشنا شوید

در صورتی که در مورد هر یک از این نمودارها سوالی دارید در قسمت نظرات با ما در تماس باشید.

منبع :towarddatascience

۶ دیدگاه دربارهٔ «ساخت نمودار و مصورسازی در matplotlib در پایتون»

  1. سلام وقت بخیر
    امکان این هست که با دیتاهایی که روی لپتاپ داریم نمودار رسم کرد؟
    یعنی برای مثال من یه پوشه شامل ۱۰۰۰ تا دیتا دارم میشه با این دیتا ها نمودار رسم کرد یا حتما باید تبدیل به csv بشن؟

    1. سلام. بله این امکان وجود دارد. باید اطلاعات شامل تمام داده ها خوانده شود و در هر مرحله داخل دیتا یک دیتا فریم ذخیره شود. به این ترتیب کل داده ها در یک جدول قرار می گیرند و بعد از آن می شود برای رسم این داده ها اقدان مرد.

    1. سلام. بله مشکلی نیست برای رسم نمودار. همون مستقیم میشه فایل جیسون رو نمودار کشید هم اینکه فایل رو تبدیل به دیتا فریم یا لیست کنیم.

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

code

به بالای صفحه بردن