معرفی کتابخوانه پلاتلی (plotly)(بخش اضافی)

فرق پلاتلی با مت پلات لیب :

(برای استراحت این قسمت رو بخونید که یکم وقت بدین مغزتون قبلیا رو هضم کنه ?. در صورت آمادگی میتونین این قسمت رو رد کنین.)

تا الان شاید براتون سوال شده وقتی مت­پلات­لیب بااین همه امکانات هست (که یه خوردشو بهتون یاد دادیم ?)

برای­ چی نیازه که پلاتلی رو هم یاد بگیریم؟

خب این موضوع رو میخوام با ذکر به مثال توضیح بدم:

یک عادت آزاردهنده در بین هواداران فوتبال وجود داره که هر زمان که یک بازیکن جوان اما مسلماً استثنایی ظاهر میشه، اونو با اسطوره هایی مانند مسی یا رونالدو مقایسه می کنن.

اونا یه جورایی این نکته که در زمانی که این نوجوان­ها در هسته بودن، این اسطوره ها به بازی ها غلبه کرده بودن.

مقایسه Plotlyبا Matplotlibبه نوعی مشابه همان ابتدا بود. Matplotlibاز سال 2003 به شدت مورد استفاده قرار گرفته بود و Plotly به تازگی در سال 2014 منتشر شده بود.

در این زمان بسیاری از Matplotlib خسته شده بودن، بنابراین Plotly به دلیل تازگی و تعامل آن به گرمی مورد استقبال قرار گرفت. با این حال، این کتابخونه نمی‌تونست امیدوار باشه که به عنوان پادشاه پایتون در حال طراحی پلات برنامه­ها از Matplotlib، جایگاه برتر را بدزده.

در سال 2019، زمانی که Plotly در ماه جولای Express API خود را منتشر کرد، همه چیز به شدت تغییر کرد. این باعث انفجار علاقه در کتابخانه شد و مردم از چپ و راست شروع به استفاده از آن کردن.

با نسخه اصلی دیگری (5.0.0) که در ژوئن امسال منتشر شد، من فکر می کنم Plotlyبیش از اندازه کافی برای مقایسه آن با Matplotlibبه بلوغ رسیده است.

با این مقدمه، بیاین توضیح اصلی رو شروع کنیم:

1. قابلیت استفاده API:

بیایید با مقایسه سهولت استفاده از API آنها شروع کنیم. هر دو رابط های سطح بالا و سطح پایین را برای تعامل با عملکرد اصلی ارائه می دهند.

1.1 سازگاری APIهای سطح بالاتر (Pyplotدر مقابل Express):

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

از سوی دیگه، Pyplotتمام توابع رسم و سفارشی سازی ها را در یک APIواحد و جدید بسته بندی می کند. حتی اگر فراخوانی نمودار دارای امضای یکسانی باشد، توابع سفارشی سازی با توابع OOP APIمتفاوت است.

Plotly = 1 vs. MPL = 0

1.2 مقدار کد مورد نیاز برای جابجایی بین APIها:

برای جابجایی از Pyplotبه OOP API MPL، به سادگی میشه نحوه تعامل با ساختارهای داده اصلی، مانند اشیاء شکل و محورها را تغییر بدیم. فراخوانی به نمودارها دارای پارامترای مشابهی هستند تغییری نمی کنه.

تغییر از Expressبه اشیاء گراف نیاز به یک منحنی یادگیری تند دارد. امضای توابع برای ایجاد تمام نمودارها تغییر می کند و GO پارامترهای بسیار بیشتری را به هر فراخوانی نمودار اضافه می کند. نقطه ضعف اینجاست که GO نیاز به یادگیری پارامتر و توابع جداگانه داره.

Plotly = 1 vs. MPL = 1

1.3 سفارشی سازی API

اگرچه بخش جداگانه ای در مورد سفارشی سازی وجود دارد، اما باید در مورد آن از نظر API صحبت کنیم.

همه سفارشی سازی ها در Matplotlib دارای عملکردهای جداگانه هستند. این به شما اجازه می دهد تا تغییراتی را در نمودار در تکه های کد و با استفاده از حلقه ها یا سایر رویه ها ایجاد کنید.

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

ممکن است مکث کنید و به این تفاوت‌ها بین APIها فکر کنید، اما Matplotlib بیشتر پایتونیک و خوانا است.

Plotly = 1 vs. MPL = 2

2. سرعت:

برای دیدن تفاوت واقعی بین سرعت ها، باید از مجموعه داده های بزرگتری استفاده کنیم. من مجموعه دیتابیس های diamonds را از Seaborn وارد می کنم و زمان لازم برای ترسیم یک نمودار پراکندگی ساده را با هم مقایسه می کنم. که نشون میده Matplotlib تقریبا 80 برابر سریعتر از Plotly است و خطاهای SD بسیار کمتری دارد.

Plotly = 1 vs. MPL = 3

تا اینجا دیدیم که پلاتلی شکستی نسبی خورده؛ پس یادگیری این کار بیهودهایه؟ قطعا تا اینجا نمیشه جواب

کاملی به این سوال داد، پس ادامهی این مقایسه، میتونه مهم باشه. ولی ما ادامهی این موضوع رو به بعدا موکول

میکنیم و الان به آموزش اصلیمون میپردازیم که از اصل بحث دور نشده باشیم?

انجمن هوش مصنوعی دانشگاه اصفهان
احسان قیچی ساز
امیرمحسن براهیمی
ابوالفضل شیشه گر
علیرضا عشقی