Matplotlib یکی از کتابخانههای قدرتمند و پرکاربرد در زبان برنامهنویسی پایتون برای مصورسازی دادهها است. این کتابخانه امکان ایجاد انواع نمودارهای دوبعدی و سهبعدی، از جمله نمودارهای خطی، میلهای، پراکندگی، هیستوگرام و دایرهای را فراهم میکند. این کتابخانه در حوزههای مختلفی از جمله تحقیقات علمی، تحلیل دادهها و گزارشگیری مورد استفاده قرار میگیرد.
ژوپیترلب (JupyterLab) یک محیط توسعه تعاملی مبتنی بر وب است که امکان کدنویسی، اجرای کد و تجسم دادهها را بهصورت همزمان فراهم میکند. ادغام Matplotlib با ژوپیترلب به کاربران این اجازه را میدهد تا نمودارها و تجسمهای خود را مستقیماً در نوتبوکهای ژوپیتر مشاهده و تحلیل کنند. این ترکیب، فرآیند تجزیهوتحلیل دادهها را کارآمدتر و قابل مشاهدهتر میسازد. در این مقاله، به معرفی کتابخانه Matplotlib، ویژگیها و کاربردهایش میپردازیم و به شما میگوییم، چگونه میتوانید آن را نصب کنید.
کتابخانه Matplotlib چیست؟
در این مقاله به بررسی نحوه استفاده از کتابخانه Matplotlib در ژوپیترلب پرداختیم. ژوپیترلب به عنوان یک محیط تعاملی برای کدنویسی، به شما این امکان را میدهد که کدها را در قالب نوتبوکهایی اجرا کنید که به راحتی قابلیت ویرایش و مشاهده نتایج را دارند. برای آشنایی بیشتر با این محیط کاربردی، مقاله ژوپیتر نوت بوک چیست؟ را مطالعه کنید. Matplotlib یک کتابخانه جامع برای ایجاد visualizations ثابت، متحرک و تعاملی در پایتون است. این یک API شیگرا برای ایجاد نمودارها در برنامهها با استفاده از جعبه ابزار GUI همه منظوره مانند Tkinter، wxPython، Qt یا GTK ارائه میکند. با Matplotlib، کاربران میتوانند طیف گستردهای از نمودارها، از جمله نمودارهای خطی، نمودارهای میلهای، نمودارهای پراکنده، هیستوگرامها و نمودارهای سهبعدی را تولید کنند.

ویژگیهای کلیدی کتابخانه Matplotlib
1. امکان ترسیم انواع مختلف نمودارها با استفاده از این کتابخانه
Matplotlib از طیف گسترده ای از انواع نمودارها، از جمله نمودارهای خطی، نمودارهای پراکنده، نمودار میله ای، هیستوگرام، نمودار دایرهای و نمودارهای سهبعدی پشتیبانی میکند. این تطبیقپذیری کاربران را قادر میسازد تا به طور موثر مجموعه دادهها و روابط مختلف را visualize کنند و نیازهای تحلیلی مختلف را در تحقیقات علمی، تجزیه و تحلیل دادهها و یادگیری ماشین برآورده سازند. همچنین برای نشان دادن روندها در طول زمان با نمودارهای خطی یا نمایش توزیع دادهها از طریق هیستوگرام، Matplotlib گزینهای مناسب است.

2. قابلیت سفارشی سازی گسترده
یکی از ویژگیهای برجسته Matplotlib قابلیتهای سفارشیسازی گسترده آن است. کاربران میتوانند تقریباً هر قمسمتی از یک طرح، مانند رنگها، سبکهای خط، نشانگرها، برچسبها، عنوانها، محورها و خطوط شبکه را تغییر دهند. این سطح از کنترل، ایجاد طرحهای بصری جذاب و آموزنده را که همگام با استاندارها و اولویتهای زیباییشناختی باشد را ممکن میسازد. به عنوان مثال، تنظیم سبک خطوط و نشانگرها میتواند وضوح را افزایش دهد و سفارشیکردن رنگها و برچسبها سازگاری نمودار با استانداردها را تضمین میکند.
3. اسناد گسترده و پشتیبانی جامعه
این کتابخانه دارای اسناد گسترده و گالری غنی از نمونه ها، آموزش ها و منابع اجتماعی است. این انبوه اطلاعات به کاربران در یادگیری، عیبیابی، و یافتن الگو برای ایجاد نمودارها کمک میکند.
مزایا و معایب کتابخانه Matplotlib

مزایا
1. توانایی تولید تصاویر استاتیک با کیفیت بالا
Matplotlib قادر به تولید تصاویر استاتیک با فرمتهای مختلف مانند PNG، SVG، و PDF است. این ویژگی به کاربران این امکان را میدهد که نمودارهایی با کیفیت بالا برای چاپ یا نمایش در مقالات علمی ایجاد کنند. پشتیبانی از فرمتهای مختلف خروجی، این کتابخانه را برای استفاده در کاربردهای مختلف بسیار منعطف میکند.
2. یکپارچگی قوی با کتابخانههای علمی
این کتابخانه به راحتی با کتابخانههای علمی مانند NumPy و pandas یکپارچه میشود که این موضوع آن را برای تجزیه و تحلیل دادهها و ارائه نمودارهایی از دادههای پیچیده بسیار مفید میکند. کاربران میتوانند آرایهها یا دادههای DataFrame را مستقیماً به نمودار تبدیل کنند و نمایشهای گرافیکی دقیق و متناسب با دادهها به وجود بیاورند.
معایب
1. پشتیبانی محدود از نمودارهای تعاملی
Matplotlib به طور پیشفرض برای تولید نمودارهای استاتیک طراحی شده است و پشتیبانی آن از نمودارهای تعاملی محدود است. اگرچه میتوان با استفاده از ابزارهای اضافی مانند mpl_toolkits یا matplotlib.widgets قابلیتهای تعاملی را افزود، اما به طور کلی تجربه تعاملی در این کتابخانه به خوبی برخی کتابخانههای دیگر مانند Plotly یا Bokeh نیست.
2. سینتاکس پیچیده برای نمودارهای پیشرفته:
سینتاکس Matplotlib برای ایجاد نمودارهای پیچیده و پیشرفته ممکن است کمی پیچیده باشد و نیاز به کدنویسی زیاد داشته باشد. این پیچیدگی میتواند کاربران تازهکار را دچار مشکل کند و تجربه استفاده از این کتابخانه را برای آنها سختتر کند.
3. محدودیت در رسم نمودارهای سهبعدی
هرچند Matplotlib قابلیت رسم نمودارهای سهبعدی را دارد، اما این قابلیت نسبت به کتابخانههای تخصصیتر مانند Plotly یا Mayavi محدود است. ایجاد نمودارهای تعاملی سهبعدی در Matplotlib معمولاً به انجام فرآیند پیچیدهای نیاز دارد و کیفیت نمودارهای سهبعدی آن ممکن است به اندازه سایر ابزارها خوب نباشد.
4. ظاهر ساده و ابتدایی نمودارهای پیشفرض
اگرچه Matplotlib اجازه سفارشیسازی زیادی را میدهد، اما نمودارهای پیشفرض آن اغلب ظاهر ساده و ابتدایی دارند. برای کسانی که به دنبال نمودارهای مدرن و جذاب هستند، استفاده از کتابخانههایی مانند Seaborn (که بر اساس Matplotlib ساخته شده) یا Plotly میتواند انتخاب بهتری باشد. بنابراین، برای داشتن نمودارهایی با ظاهر حرفهایتر نیاز به تلاش بیشتر و استفاده از استایلهای سفارشی وجود دارد.
معماری کتابخانه Matplotlib

کتابخانه Matplotlib یکی از پرکاربردترین ابزارها برای تجسم دادهها در پایتون است و معماری آن به گونهای طراحی شده که انعطافپذیری زیادی را در ایجاد نمودارهای مختلف فراهم میکند. معماری این کتابخانه به صورت ماژولار و چند لایه است که هر لایه وظایف خاصی را انجام میدهد.
کتابخانه Matplotlib در محیطهای تعاملی مانند ژوپیترلب به شما این امکان را میدهد که دادهها را به شکل گرافیکی و بصری نمایش دهید. اما برای استفاده از این ابزار، ابتدا باید ژوپیترلب را روی سیستم خود نصب کنید. اگر هنوز موفق به نصب ژوپیترلب نشدهاید، مقاله «نصب Jupyter Notebook در ویندوز» میتواند به شما کمک کند تا مراحل نصب را بهطور کامل انجام دهید.
در زیر، معماری کلی این کتابخانه توضیح میدهیم:
1. هسته (Core)
هستهی Matplotlib به عنوان زیرساخت اصلی این کتابخانه عمل میکند و وظیفه مدیریت دادهها، ترسیم نمودارها و تنظیمات عمومی را بر عهده دارد. این بخش از کتابخانه شامل کلاسها و توابعی است که برای ایجاد انواع مختلف نمودارها از جمله خطی، پراکندگی، میلهای و دیگر موارد استفاده میشود. بیشتر عملکردهای پایهای Matplotlib مانند تنظیمات عمومی نمودار، افزودن عناوین و برچسبها، و تنظیم ویژگیهای عمومی توسط این بخش به انجام میرسد.
2. اینترفیس تعاملی (Pyplot)
Pyplot یک ماژول است که به عنوان رابط کاربری برای افراد مختلف طراحی شده است و بیشتر کاربران آن را برای ترسیم نمودارها به کار میبرند. این اینترفیس تعاملی شباهت زیادی به دستورهای MATLAB دارد و مجموعهای از توابع ساده برای تولید نمودارهای معمولی مانند خطی، پراکندگی و هیستوگرام ارائه میدهد. این ماژول بیشتر برای کاربرانی که نیاز به نوشتن کدهای پیچیده ندارند و میخواهند سریعاً نمودارهای ساده ایجاد کنند، مفید است.
3. Artist
در معماری Matplotlib، مفهوم Artist به اشیاء مختلف نمودارها مانند خطها، نقاط داده، متنها، برچسبها، محورها و پسزمینهها اشاره دارد. هر شیء گرافیکی در Matplotlib یک Artist است و ویژگیهای مختلفی مانند رنگ، اندازه، نوع و ضخامت را میتوان برای آن تنظیم کرد. این اشیاء به کاربران این امکان را میدهد که دقیقاً مشخص کنند، هر جزء نمودار چگونه باید نمایش داده شود.
4. محورها (Axes)
Axes یکی از اجزای اصلی در معماری Matplotlib است و نمایانگر فضای گرافیکی برای رسم دادهها است. هر نمودار یا شکل، شامل یک یا چند محور (Axes) است که دادهها روی آنها قرار میگیرند. در حقیقت، Axes یک فضای دو یا سهبعدی است که شامل متغیرهای گرافیکی مختلف است و کاربران میتوانند در آن دادهها را قرار دهند.
5. Figure
Figure در واقع نمای کلی یک نمودار است که شامل تمام اجزای آن مانند محورهای X وY، عنوان، برچسبها، و سایر عناصر بصری است. یک شکل ممکن است شامل چندین محور باشد که به ترتیب برای نمایش نمودارهای مختلف یا جزئیات اضافی استفاده میشوند. هر Figure میتواند شامل چندین Axes باشد و این ساختار اجازه میدهد تا نمودارهای پیچیدهتری با چندین بخش به طور همزمان ایجاد شوند.
6. Backends
Backends وظیفه رندرکردن نمودارها در فرمتهای مختلف را بر عهده دارد. این قسمت از Matplotlib به کاربران این امکان را میدهد که نمودارها را در قالبهای مختلف مانند PNG، PDF، SVG و EPS ذخیره کنند. همچنین، در صورتی که نیاز به رندرینگ تعاملی در محیطهای مختلف باشد (مثلاً در یک محیط گرافیکی یا وب)، Matplotlib از انواع مختلفBackends مانند TkAgg، Agg و WebAgg پشتیبانی میکند.
7. Submodules
Matplotlib شامل تعدادی زیرماژول است که هرکدام ویژگیهای خاصی را به کتابخانه اضافه میکنند. برای مثال، mpl_toolkits برای نمودارهای سهبعدی و سایر انواع نمودارهای پیچیده مورد استفاده قرار میگیرد. این زیرماژولها به کاربران اجازه میدهند، ویژگیهای خاصتر و پیشرفتهتری را برای استفاده در اختیار داشته باشند.
8. Integration
Matplotlib به راحتی با سایر کتابخانههای پایتون، مانند NumPy، pandas، SciPy و Seaborn یکپارچه میشود. این یکپارچگی به کاربران این امکان را میدهد که دادههای پیچیده را با استفاده از توابع و ابزارهای دیگر پردازش کنند.
کاربردهای کتابخانه Matplotlib

1. تجسم دادههای آماری
یکی از کاربردهای اصلی Matplotlib در تجزیه و تحلیل دادههای آماری است. این کتابخانه به کاربران این امکان را میدهد که دادهها را به صورت نمودارهای مختلفی مانند هیستوگرامها، نمودارهای پراکندگی و جعبهای (box plot) نمایش دهند. برای مثال، از نمودارهای هیستوگرام برای نمایش توزیع دادهها یا از نمودارهای پراکندگی برای تجزیه و تحلیل همبستگی بین دو متغیر استفاده میشود.
2. تحلیل دادههای علمی و مهندسی
Matplotlib به دلیل قابلیت ایجاد نمودارهای دقیق و قابل تنظیم، در حوزههای علمی و مهندسی کاربرد گستردهای دارد. این کتابخانه در تحلیل دادههای تجربی و شبیهسازیهای علمی مانند دادههای آزمایشگاهی، دادههای فیزیکی، شیمیایی یا مهندسی استفاده میشود. نمودارهای خطی، سطحی، سهبعدی و پراکندگی معمولاً برای نمایش دادههای علمی به کار میروند.
3. تحلیل دادههای مالی
این کتابخانه در تحلیل دادههای مالی نیز کاربرد فراوانی دارد. تحلیلگران مالی میتوانند از این کتابخانه برای تجسم دادههای بازار سهام، روندهای اقتصادی و تحلیل عملکرد مالی شرکتها استفاده کنند. نمودارهای شمعی (candlestick) و نمودارهای خطی برای نمایش روند قیمتها، بازدهی سرمایهگذاریها و تحلیلهای تکنیکال قابل استفاده است.
4. نمایش دادههای زمانی
Matplotlib برای نمایش دادههای زمانی یا سریهای زمانی بسیار مفید است. این دادهها معمولاً شامل تاریخها یا زمانها به عنوان محور X و مقادیر مربوط به آن زمانها به عنوان محور Y هستند. نمودارهای خطی یا نمودارهای پراکندگی به ویژه برای نمایش تغییرات متغیرها در طول زمان، مانند پیشبینی روندهای اقتصادی، تغییرات قیمت یا دما در طول یک سال استفاده میشوند.
5. تجزیه و تحلیل دادههای چندمتغیره
Matplotlib برای تجزیه و تحلیل دادههای چندمتغیره نیز مناسب است. با استفاده از نمودارهای پراکندگی چندبعدی، کاربران میتوانند روابط بین چندین متغیر را تجزیه و تحلیل کنند. این نوع تجسمها به تحلیلگران داده کمک میکند تا الگوهای پنهان در دادههای پیچیده را بفهمند.
6. نمایش دادههای شبکه و گراف
در تحلیلهای شبکهای و گرافها، Matplotlib قابلیتهای خوبی برای رسم نمودارهایی مانند گرافهای ارتباطی یا شبکههای پیچیده دارد. این کاربرد معمولاً در تحلیلهای اجتماعی، تحلیل شبکههای ارتباطی یا نمایش ساختار شبکههای رایانهای و بیولوژیکی استفاده میشود. کاربران میتوانند ارتباطات و روابط میان گرهها و یالها را بهطور بصری نمایش دهند.
7. ایجاد نمودارهای جغرافیایی و نقشهها
Matplotlib برای تجزیه و تحلیل دادههای جغرافیایی نیز کاربرد دارد. با استفاده از ابزارهای اضافی مانند Basemap یا Cartopy، میتوان دادههای جغرافیایی را روی نقشهها ترسیم کرد. این ابزارها برای نمایش دادههای مکانی مانند دما، بارش، یا توزیع جمعیت بر روی نقشههای جغرافیایی مناسب هستند.
8. آموزش و یادگیری ماشین
در زمینه یادگیری ماشین، Matplotlib به عنوان یک ابزار قدرتمند برای تجسم مدلهای یادگیری ماشین و ارزیابی آنها کاربرد دارد. از این کتابخانه میتوان برای تجزیه و تحلیل عملکرد مدلها، مانند نمودارهای خطای پیشبینی یا ماتریسهای سردرگمی استفاده کرد. همچنین، برای نمایش توزیع دادهها و پیشبینیها انواع مختلف نمودارهای آماری میتوان از آنها بهره برد.
9. نمایش دادههای شبیهسازی شده
Matplotlib به ویژه برای نمایش بصری دادههای شبیهسازی شده در زمینههای مختلف، مانند فیزیک، مهندسی و علوم کامپیوتر مفید است. به عنوان مثال، میتوان نتایج شبیهسازیها را به صورت نمودارهای دو یا سهبعدی نشان داد و الگوهای رفتاری مدلهای مختلف را بررسی کرد.
10. ایجاد نمودارهای باکیفیت برای چاپ و انتشار
یکی از ویژگیهای خاص Matplotlib تولید تصاویر استاتیک با کیفیت بالا است. این ویژگی باعث میشود که این کتابخانه برای تولید نمودارهای مورد استفاده در مقالات علمی، کتابها یا گزارشها بسیار مناسب باشد. فرمتهای خروجی مانند PDF و SVG امکان چاپ با کیفیت بالا را فراهم میآورد.
نصب کتابخانه Matplotlib
پیشنیازها:
قبل از نصب matplotlib نصب پایتون از وب سایت رسمی الزامی است.
در حین نصب matplotlib، برخی از فایلها به صورت خودکار نصب میشوند که شامل موارد زیر است:
- Python (>= 3.7)
- NumPy (>= 1.17)
- setup tools
- cycler (>= 0.10.0)
- dateutil (>= 2.7)
- kiwisolver (>= 1.0.1)
- Pillow (>= 6.2)
- pyparsing (>=2.2.1)
- fontTools (>=4.22.0)
نصب Matplotlib در MacOS
با اجرای دستور زیر بررسی کنید که آیا pip3 و python3 به درستی نصب شدهاند:
python3 --version pip3 --version
matplotlib را با استفاده از دستور pip نصب کنید:
pip3 install matplotlib

نصب Matplotlib در ویندوز
سپس، Matplotlib را با استفاده از دستور PIP زیر در ترمینال خط فرمان نصب کنید:
pip install matplotlib

نصب به طور خودکار شروع میشود و Matplotlib با آخرین نسخه خود با موفقیت نصب میگردد:
نصب Matplotlib در اوبونتو
بسته کامل را با دانلود python از python.org نصب کنید، سپس از دستور apt install برای نصب در سیستم اوبونتو بهره ببرید.
راه دیگر این است که ابتدا pip را مستقیماً در اوبونتو نصب کنید و سپس نصب matplotlib را با انجام مراحل زیر به انجام برسانید:
در ابتدا دستور زیر را در ترمینال اوبونتو تایپ کنید:
sudo apt install python3-pip
سپس دستور زیر را بنویسید:
pip3 install matplotlib
سپس از دستور زیر برای نصب matplotlib در پایتون 3 استفاده کنید:
pip install matplotlib
سرویس ژوپیترلب اهورا کولب
اهورا کولب یک سرویس ژوپیتر لب قدرتمند است که محیط توسعه JupyterLab را برای انجام محاسبات علمی، تحلیل دادهها، یادگیری ماشین و برنامهنویسی فراهم میکند. این سرویس به کاربران امکان میدهد، بدون نیاز به نصب یا تنظیمات پیچیده، تنها با استفاده از یک مرورگر وب، به کدنویسی و اجرای پروژههای خود بپردازند.
امکانات اهورا کولب:
1. پشتیبانی از محیط مدرن JupyterLab
امکان باز کردن همزمان چندین نوتبوک، فایل متنی و ترمینال، مدیریت دادهها با قابلیت درگانددراپ و ویرایشگر قدرتمند متن با هایلایت سینتکس پیشرفته؛
2. پشتیبانی از زبانهای برنامهنویسی محبوب
امکان استفاده از زبانهای Python، R، Julia و Bash با قابلیت اضافه کردن کرنلهای جدید برای زبانهای دیگر؛
3. دسترسی به کتابخانههای پرطرفدار
پشتیبانی از کتابخانههایی مانند PyTorch، TensorFlow، NumPy، Pandas و Matplotlib برای یادگیری ماشین و تحلیل دادهها؛
4. همکاری و اشتراکگذاری در زمان واقعی
امکان بهاشتراکگذاری نوتبوکها و همکاری تیمی روی پروژهها با استفاده از افزونهها و یکپارچگی با ابزارهایی مانند Git و Google Drive ؛
5. افزونهها و یکپارچگی با ابزارهای دیگر
دسترسی به انواع افزونهها و امکان اتصال به سرویسهای ابری مانند AWS برای افزایش کارایی و انعطافپذیری؛
1. بهروزرسانی خودکار و امنیت بالا
دسترسی به آخرین قابلیتها بدون نیاز به آپدیت دستی، ذخیرهسازی رمزنگاریشده دادهها و کاهش هزینههای DevOps با مدیریت سرورها در فضای ابری؛
مزایای اهورا کولب
1. پلنهای پرداخت بر اساس مصرف
ماشین پردازش گرافیکی اهورا امکان تعیین زمان دلخواه مصرف و پرداخت هزینهها بر اساس میزان استفاده، شفافیت بیشتری در مدیریت هزینهها ایجاد میکند؛
2. اجرای پیوسته و بدون وقفه
امکان استفاده از کارت گرافیک بهصورت اختصاصی یا اشتراکی، اجرای مداوم و بدون قطعی برنامهها را تضمین میکند؛
3. انتخاب مدل GPU متناسب با نیاز
ارائه گزینههای متنوع کارت گرافیک، امکان شخصیسازی قدرت پردازشی را به وجود میآورد؛
4. اجرای همزمان چندین پروژه
برخلاف برخی سرویسها، اهورا کولب امکان اجرای همزمان چندین پروژه را به شما میدهد؛
جمع بندی
کتابخانهٔ Matplotlib یکی از ابزارهای کلیدی در اکوسیستم پایتون برای ترسیم و دادهها است که با امکانات گسترده خود، به تحلیلگران و پژوهشگران اجازه میدهد، نمودارهایی حرفهای و متنوع ایجاد کنند. ترکیب این کتابخانه با محیط تعاملی JupyterLab، تجربهای روان و قدرتمند در تحلیل بصری دادهها فراهم میکند. استفاده از افزونههایی مانند ipympl نیز قابلیتهای تعاملی Matplotlib را در نوتبوکهای Jupyter تقویت کرده و فرآیند تحلیل دادهها را سریعتر و مؤثرتر میسازد. در مجموع، Matplotlib در کنار JupyterLab ابزاری ایدهآل برای تجسم دادهها در پروژههای علمی، تحقیقاتی و آموزشی است.
سوالات متداولی که شما میپرسید؟
1. چگونه میتوان خروجی نمودارهای Matplotlib را در JupyterLab نمایش داد؟
برای نمایش نمودارها در نوتبوک JupyterLab، میتوانید از یکی از دستورات زیر در ابتدای سلول کد خود استفاده کنید:
- برای نمایش نمودارها بهصورت استاتیک:
%matplotlib inline
- برای نمایش نمودارها بهصورت تعاملی
%matplotlib widget
2. آیا میتوان از Matplotlib برای ایجاد نمودارهای سهبعدی در JupyterLab استفاده کرد؟
بله، با استفاده از ماژول mpl_toolkits.mplot3d در Matplotlib، میتوانید نمودارهای سهبعدی ایجاد کنید. برای این کار، ابتدا باید این ماژول را نصب کنید و سپس نوع نمودار سهبعدی مورد نظر خود را برای ایجاد برگزینید.
3. چگونه میتوان نمودارهای Matplotlib را در فرمتهای مختلف ذخیره کرد؟
برای ذخیره نمودارهای ایجاد شده با Matplotlib در فرمتهای مختلف مانند PNG، PDF، SVG و دیگر موارد، میتوانید از تابع savefig() استفاده کنید.
4. آیا میتوان از Matplotlib در کنار سایر کتابخانههای تجسم داده مانند Seaborn یا Plotly در JupyterLab استفاده کرد؟
بله، Matplotlib بهخوبی با سایر کتابخانههای تجسم داده مانند Seaborn و Plotly در JupyterLab سازگار است. در واقع، Seaborn بر پایهی Matplotlib ساخته شده و بسیاری از ویژگیهای آن را به شکل سادهتر ارائه میدهد. همچنین میتوانید در یک نوتبوک از چندین کتابخانه بهصورت همزمان استفاده کنید و از مزایای هرکدام در شرایط مختلف بهره ببرید.
منبع:
