آموزش

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

Explore various types of data plots—from the most common to advanced and unconventional ones—what they show, when to use them, when to avoid them, and how to create and customize them in Python.

تاریخ انتشار:
29 اردیبهشت 1405
پایتون
15 دقیقه
مصورسازی داده
کاربرهای فینکا در چه شرکت‌هایی مشغول به کار هستند؟

ایجاد نمودارهای داده یکی از مراحل ضروری در تحلیل اکتشافی داده‌هاست. اینکه بدونیم در هر مورد خاص چه نوع مصورسازی داده‌ای بسازیم، می‌تونه به ما کمک کنه تا بینش‌های ارزشمند و گاهی غیرمنتظره‌ای رو از داده‌هامون استخراج کنیم تا بتونیم تصمیمات مهم مبتنی بر داده بگیریم.

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

دانلود کتابخانه‌های اصلی و داده‌های نمونه

برای اینکه داده‌ای داشته باشیم تا بتونیم نمودارهامون رو روی اون‌ها تمرین کنیم، بیا اول کتابخانه‌های ضروری پایتون و چند تا مجموعه داده داخلی از کتابخانه Seaborn رو دانلود کنیم:

برای هر نوع نمودار داده، ما یک نمونه ساده از اون رو، با کمترین تغییرات و شخصی‌سازی، فقط برای نشون دادن نحوه کار هر متد، ایجاد می‌کنیم. با این حال، یک عنوان مرتبط به هر نمودار اضافه می‌کنیم تا معنی‌دارتر به نظر برسه. برای بسیاری از مثال‌ها، باید از قبل داده‌ها رو پیش‌پردازش کنیم (در کد با عنوان Data preparation کامنت شده).

ما بیشتر در matplotlib و Seaborn کار خواهیم کرد. اگر با رسم نمودار در این کتابخانه‌ها آشنا نیستی و به یک معرفی سریع نیاز داری، می‌تونی مطالب آموزشی زیر رو دنبال کنی:

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

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

بیا با رایج‌ترین نمودارهای داده که در بسیاری از زمینه‌ها استفاده می‌شن و می‌شه اون‌ها رو در اکثر کتابخانه‌های مصورسازی داده پایتون (به جز چند کتابخانه خیلی تخصصی) ساخت، شروع کنیم.

نمودار میله‌ای (Bar chart)

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

برای ایجاد یک نمودار میله‌ای ساده در matplotlib، ما از تابع matplotlib.pyplot.bar() به شکل زیر استفاده می‌کنیم:

ما می‌تونیم عرض و رنگ میله، عرض و رنگ لبه میله رو بیشتر شخصی‌سازی کنیم، برچسب‌های تیک رو به میله‌ها اضافه کنیم، میله‌ها رو با الگوها پر کنیم و غیره.

به عنوان یک یادآوری سریع در مورد نحوه کار در matplotlib، نگاهی به برگه تقلب Matplotlib: رسم نمودار در پایتون بنداز.

نمودار خطی (Line plot)

نمودار خطی نوعی نمودار داده هست که پیشرفت یک متغیر رو از چپ به راست در امتداد محور x از طریق نقاط داده‌ای که با بخش‌های خط مستقیم به هم متصل شده‌اند، نشون می‌ده. معمولاً تغییر یک متغیر در طول زمان رسم می‌شه. در واقع، نمودارهای خطی اغلب برای مصورسازی سری‌های زمانی استفاده می‌شن، همونطور که در آموزش نمودارهای خطی سری زمانی Matplotlib مورد بحث قرار گرفت.

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

می‌شه عرض، سبک، رنگ و شفافیت خط رو تنظیم کرد، نشانگرها رو اضافه و شخصی‌سازی کرد و غیره.

آموزش نمودارهای خطی در MatplotLib با پایتون توضیحات و مثال‌های بیشتری در مورد نحوه ایجاد و شخصی‌سازی یک نمودار خطی در matplotlib ارائه می‌ده. برای یادگیری نحوه ایجاد و شخصی‌سازی یک نمودار خطی در seaborn، آموزش نمودار خطی پایتون Seaborn: ایجاد مصورسازی داده‌ها رو بخون.

نمودار پراکندگی (Scatter plot)

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

کد زیر نشون می‌ده که چطور با استفاده از تابع matplotlib.pyplot.scatter() یک نمودار پراکندگی ساده در matplotlib بسازیم:

ما می‌تونیم اندازه نقطه، استایل، رنگ، میزان شفافیت، عرض حاشیه، رنگ حاشیه و غیره رو تغییر بدیم.

می‌تونی در این آموزش بیشتر درباره نمودارهای پراکندگی (و نه فقط اون‌ها!) بخونی: افشای راز داده‌ها: مصورسازی داده‌هایی که روابط رو به تصویر می‌کشن.

هیستوگرام (Histogram)

هیستوگرام نوعی نمودار داده هست که توزیع فراوانی مقادیر یک متغیر عددی رو نشون می‌ده. در واقع، داده‌ها رو به گروه‌هایی از محدوده مقادیر به نام دسته (bin) تقسیم می‌کنه، تعداد نقاط مربوط به هر دسته رو می‌شماره و هر دسته رو به صورت یک نوار عمودی با ارتفاعی متناسب با مقدار شمارش اون دسته نمایش می‌ده. هیستوگرام رو می‌شه نوع خاصی از نمودارهای میله‌ای در نظر گرفت، با این تفاوت که میله‌های مجاور اون بدون فاصله به هم چسبیده‌ان، که این به دلیل پیوسته بودن دسته‌هاست.

ما به راحتی می‌تونیم با استفاده از تابع matplotlib.pyplot.hist() یک هیستوگرام پایه در matplotlib بسازیم:

امکان شخصی‌سازی خیلی چیزها داخل این تابع وجود داره، مثل رنگ و سبک هیستوگرام، تعداد دسته‌ها، لبه‌های دسته، محدوده پایین و بالای دسته‌ها، اینکه هیستوگرام معمولی باشه یا تجمعی، و غیره.

در آموزش چگونه با Plotly یک هیستوگرام بسازیم، می‌تونی راه دیگه‌ای رو برای ایجاد هیستوگرام در پایتون بررسی کنی.

نمودار جعبه‌ای (Box plot)

نمودار جعبه‌ای نوعی نمودار داده هست که مجموعه‌ای از پنج آمار توصیفی داده رو نشون می‌ده: حداقل و حداکثر مقادیر (بدون در نظر گرفتن نقاط پرت)، میانه، و چارک‌های اول و سوم. به صورت دلخواه، می‌تونه مقدار میانگین رو هم نشون بده. اگر فقط به این آمارها علاقه داری و نمی‌خوای عمیقاً وارد توزیع داده‌های واقعی زیرین بشی، نمودار جعبه‌ای انتخاب مناسبیه.

در آموزش ۱۱ تکنیک مصورسازی داده‌ها برای هر کاربرد همراه با مثال، در کنار چیزهای دیگه، توضیحات جزئی‌تری درباره اینکه چه نوع اطلاعات آماری می‌تونی از یک نمودار جعبه‌ای به دست بیاری، پیدا می‌کنی.

ما می‌تونیم با استفاده از تابع matplotlib.pyplot.boxplot() یک نمودار جعبه‌ای پایه در matplotlib ایجاد کنیم، به شکل زیر:

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

توجه داشته باش که برای ایجاد یک نمودار جعبه‌ای با استفاده از این تابع، ابتدا باید مطمئن بشیم که داده‌ها حاوی مقادیر از دست رفته نیستن. در واقع، در مثال بالا، قبل از رسم، مقادیر از دست رفته رو از داده‌ها حذف کردیم. برای مقایسه، کتابخانه Seaborn این محدودیت رو نداره و مقادیر گمشده رو خودش پشت صحنه مدیریت می‌کنه، مانند زیر:

نمودار دایره‌ای (Pie chart)

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

نمودارهای دایره‌ای دارای معایبی هستن:

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

بنابراین، نمودارهای دایره‌ای باید به ندرت و با احتیاط استفاده بشن.

برای ایجاد یک نمودار دایره‌ای ساده در matplotlib، باید از تابع matplotlib.pyplot.pie() استفاده کنیم، به صورت زیر:

در صورت لزوم، می‌تونیم نمودار دایره‌ای خودمون رو تنظیم کنیم: رنگ‌های قاچ‌های اون رو تغییر بدیم، یک فاصله (offset) به برخی از قاچ‌ها (معمولاً قاچ‌های خیلی کوچک) اضافه کنیم، شعاع دایره رو تغییر بدیم، قالب برچسب‌ها رو شخصی‌سازی کنیم، برخی یا همه قاچ‌ها رو با الگوها پر کنیم و غیره.

انواع پیشرفته نمودارهای داده

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

نمودار میله‌ای گروه‌بندی شده (Grouped bar chart)

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

مانند یک نمودار میله‌ای معمولی، می‌تونیم یک نمودار میله‌ای گروه‌بندی شده با matplotlib ایجاد کنیم. با این حال، کتابخانه Seaborn عملکرد راحت‌تری رو در تابع seaborn.barplot() خودش برای ایجاد چنین نمودارهایی ارائه می‌ده. بیا به نمونه‌ای از ایجاد یک نمودار میله‌ای گروه‌بندی شده ساده برای طول نوک پنگوئن در دو متغیر دسته‌ای نگاه کنیم: گونه و جنسیت.

متغیر دسته‌ای دوم از طریق پارامتر hue معرفی می‌شه. سایر پارامترهای اختیاری این تابع امکان تغییر جهت‌گیری، عرض و رنگ نوار، ترتیب دسته‌ها، تخمین‌گر آماری و غیره رو فراهم می‌کنه.

برای عمیق‌تر شدن در رسم با Seaborn، دوره زیر رو در نظر بگیر: مصورسازی داده متوسط با Seaborn.

نمودار مساحت پشته‌ای (Stacked area chart)

یک نمودار مساحت پشته‌ای، توسعه‌ای از یک نمودار ناحیه‌ای رایج (که صرفاً یک نمودار خطی با ناحیه زیر خط هست که رنگی یا با یک الگو پر شده) با نواحی متعددیه که هر کدام مربوط به یک متغیر خاصه و روی هم چیده شده‌ان. چنین نمودارهایی زمانی مفید هستن که بخوایم هم پیشرفت کلی مجموعه‌ای از متغیرها و هم سهم فردی هر متغیر رو در این پیشرفت پیگیری کنیم. مانند نمودارهای خطی، نمودارهای مساحت پشته‌ای معمولاً تغییر متغیرها رو در طول زمان منعکس می‌کنن.

مهمه که محدودیت اصلی نمودارهای مساحت پشته‌ای رو در نظر داشته باشیم: اون‌ها بیشتر به درک روند کلی کمک می‌کنن تا مقادیر دقیق برای مناطق پشته‌ای.

برای ساختن یک نمودار مساحت پشته‌ای ساده در matplotlib، از تابع matplotlib.pyplot.stackplot استفاده می‌کنیم، مانند زیر:

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

نمودار جعبه‌ای چندگانه (Multiple box plot)

در بخش انواع رایج نمودارهای داده، ما نمودار جعبه‌ای رو به عنوان نوعی مصورسازی داده تعریف کردیم که مجموعه‌ای از پنج آمار توصیفی داده رو نشون می‌ده. گاهی اوقات ممکنه بخوایم این آمار رو به طور جداگانه برای هر دسته از یک متغیر دسته‌ای نمایش داده و مقایسه کنیم. در چنین مواردی، باید چندین جعبه رو در یک ناحیه از نمودار رسم کنیم، که به راحتی با تابع seaborn.boxplot() می‌تونیم این کار رو انجام بدیم، به این شکل:

امکان تغییر ترتیب نمودارهای جعبه‌ای، جهت آن‌ها، رنگ، شفافیت، عرض، ویژگی‌های عناصر مختلف اون‌ها، افزودن یک متغیر دسته‌ای دیگر در منطقه نمودار و غیره وجود داره.

نمودار ویولن (Violin plot)

نمودار ویولن شبیه نمودار جعبه‌ایه و همون آمار کلی داده‌ها رو نشون می‌ده، با این تفاوت که شکل توزیع رو هم برای اون داده‌ها نشون می‌ده. مثل نمودارهای جعبه‌ای، می‌تونیم یک نمودار ویولن تکی برای داده‌های مورد علاقه یا، اغلب، نمودارهای ویولن چندگانه رو ایجاد کنیم که هر کدوم برای یک دسته جداگانه از یک متغیر دسته‌بندی‌شده است.

Seaborn فضای بیشتری برای ایجاد و سفارشی کردن نمودارهای ویولن نسبت به matplotlib فراهم می‌کنه. برای ساخت یک نمودار ویولن پایه در seaborn، باید از تابع seaborn.violinplot() استفاده کنیم، به صورت زیر:

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

نقشه حرارتی (Heatmap)

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

در بسیاری از موارد، داده‌ها قبل از ایجاد نقشه حرارتی برای آن‌ها، نیاز به کمی پیش‌پردازش دارن. این معمولاً شامل تمیز کردن داده‌ها و نرمال‌سازی می‌شه.

کد زیر نشون می‌ده که چطور با استفاده از تابع seaborn.heatmap() یک نقشه حرارتی پایه (بعد از پیش‌پردازش لازم داده‌ها) ایجاد کنیم:

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

انواع نامتعارف نمودارهای داده

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

نمودار ساقه‌ای (Stem plot)

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

برای ایجاد یک نمودار ساقه‌ای پایه در matplotlib، از تابع matplotlib.pyplot.stem() به این شکل استفاده می‌کنیم:

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

نمودارهای نواری و دسته‌ای (Strip and Swarm Plots)

این دو نوع مصورسازی داده بسیار شبیه به هم رو می‌شه به عنوان اجرای یک نمودار پراکندگی برای یک متغیر دسته‌ای در نظر گرفت: نمودارهای نواری و دسته‌ای، توزیع داخلی داده‌ها رو نمایش می‌دن، که شامل اندازه نمونه و موقعیت نقاط داده تکی می‌شه، اما آمار توصیفی رو در بر نمی‌گیره. تفاوت اصلی بین این نمودارها اینه که در نمودار نواری، نقاط داده می‌تونن همپوشانی داشته باشن، در حالی که در نمودار دسته‌ای نمی‌تونن. در عوض، در نمودار دسته‌ای، نقاط داده در امتداد محور دسته‌ای تراز می‌شن.

به خاطر داشته باش که هر دو نمودار نواری و دسته‌ای تنها برای مجموعه داده‌های نسبتاً کوچک می‌تونن مفید باشن.

در اینجا می‌تونی ببینی چطور می‌تونیم یک نمودار نواری رو با تابع seaborn.stripplot() ایجاد کنیم:

حالا بیا یک نمودار دسته‌ای رو با تابع seaborn.swarmplot() برای همون داده‌ها ایجاد کنیم و تفاوت رو ببینیم:

توابع seaborn.stripplot() و seaborn.swarmplot() نحو بسیار مشابهی دارن. برخی از ویژگی‌های قابل تغییر در هر دو تابع، ترتیب و جهت نمودار و همچنین ویژگی‌های نشانگر، مثل استایل نشانگر، اندازه، رنگ، شفافیت و غیره هستن. شایان ذکره که تنظیم میزان شفافیت نشانگر کمک می‌کنه تا تا حدودی مشکل همپوشانی نقاط در نمودار نواری برطرف بشه.

نقشه درختی (Treemap)

نقشه درختی نوعی نمودار داده هست که برای مصورسازی مقادیر عددی داده‌های دسته‌ای بر اساس دسته به عنوان مجموعه‌ای از مستطیل‌ها استفاده می‌شه که درون یک قاب مستطیلی قرار گرفتن، به طوری که مساحت هر مستطیل متناسب با مقدار دسته مربوطه‌ هست. نقشه‌های درختی از نظر کاربرد، مشابه نمودارهای میله‌ای و نمودارهای دایره‌ای هستن. مانند نمودارهای دایره‌ای، اون‌ها عمدتاً قراره دسته‌هایی رو که کل رو تشکیل می‌دن به تصویر بکشن. نقشه‌های درختی وقتی تا ده دسته با تفاوت قابل توجه در مقادیر عددی اون‌ها وجود داشته باشه، می‌تونن مؤثر و جذاب به نظر برسن.

معایب نقشه‌های درختی بسیار شبیه به نمودارهای دایره‌ای هست:

  • درک مساحت‌ها برای چشم انسان دشوارتر از طول‌هاست و اغلب می‌تونه گمراه‌کننده باشه.
  • در صورت وجود بیش از ده دسته، کارایی کمتری دارن.
  • نمی‌تونن بیش از یک مجموعه داده‌های دسته‌ای رو نمایش بدن. به عبارت دیگه، بر خلاف نمودارهای میله‌ای نمی‌تونن گروه‌بندی بشن.
  • اون‌ها به راحتی مقادیر واقعی رو فاش نمی‌کنن.
  • وقتی نوبت به دسته‌هایی با تفاوت کم در مقادیرشون می‌رسه، آموزنده نیستن.

ما باید این نکات رو در نظر داشته باشیم و از نقشه‌های درختی به ندرت و فقط در زمانی که بهترین عملکرد رو دارن استفاده کنیم.

برای ساختن نقشه درختی در پایتون، ابتدا باید کتابخانه squarify رو نصب و وارد کنیم: pip install squarify، سپس import squarify. کد زیر یک نقشه درختی پایه ایجاد می‌کنه:

ما می‌تونیم رنگ‌ها و میزان شفافیت مستطیل‌ها رو تغییر بدیم، اون‌ها رو با الگوهایی پر کنیم، ویژگی‌های لبه مستطیل‌ها رو تنظیم کنیم، یک فاصله کوچیک بین مستطیل‌ها ایجاد کنیم و خصوصیات متن برچسب رو تغییر بدیم.

یه روش دیگه هم برای ایجاد یک نقشه درختی در پایتون وجود داره—با استفاده از کتابخانه plotly. می‌تونی در مورد اون در آموزش مصورسازی داده چیست؟ راهنمایی برای دانشمندان داده بیشتر بخونی.

ابر کلمات (Word cloud)

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

در حالی که ابرهای کلمات همیشه برای هر نوع مخاطب هدفی چشم‌نواز و به طور شهودی قابل درک هستن، ما باید از برخی محدودیت‌های ذاتی این نوع نمودارهای داده آگاه باشیم:

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

یک کاربرد جالب و کمتر شناخته شده ابرهای کلمات اینه که می‌تونیم اون‌ها رو نه بر اساس فراوانی کلمات، بلکه بر اساس هر ویژگی دیگه‌ای که به هر کلمه اختصاص داده شده، بسازیم. برای مثال، می‌تونیم فرهنگ لغتی از کشورها ایجاد کنیم، به هر کشور مقدار جمعیت اون رو اختصاص بدیم و این داده‌ها رو نمایش بدیم.

برای ایجاد ابر کلمات در پایتون، باید از کتابخانه تخصصی wordcloud استفاده کنیم. ابتدا باید اون رو نصب کنیم (pip install wordcloud)، سپس کلاس WordCloud و stopwords رو وارد کنیم: from wordcloud import WordCloud, STOPWORDS. کد زیر یک ابر کلمات پایه ایجاد می‌کنه:

می‌شه ابعاد ابر کلمات رو تنظیم کرد، رنگ پس‌زمینه اون رو تغییر داد، یک نقشه رنگی برای نمایش کلمات اختصاص داد، اولویت کلمات افقی رو بر کلمات عمودی تعیین کرد، حداکثر تعداد کلمات نمایش داده شده رو محدود کرد، لیست ایست‌واژه‌ها (stopwords) رو بروزرسانی کرد، اندازه‌های فونت رو محدود کرد، همایند‌های کلمات (collocations) رو در نظر گرفت، از قابلیت بازتولید گراف (reproducibility) اطمینان حاصل کرد و غیره.

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

نتیجه‌گیری

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

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

علاوه بر پایتون، ابزارهای زیاد دیگه‌ای برای ایجاد مصورسازی داده‌های روشنگرانه وجود داره. در زیر مجموعه‌ای از دوره‌های مناسب برای مبتدیان، جامع و کامل آورده شده که می‌تونی اون‌ها رو مفید بدونی:

اشتراک‌گذاری
فهرست مطالب
  • دانلود کتابخانه‌های اصلی و داده‌های نمونه
  • انواع رایج نمودارهای داده
  • انواع پیشرفته نمودارهای داده
  • انواع نامتعارف نمودارهای داده
  • نتیجه‌گیری

دریافت اپلیکیشن فینکا

با اپلیکیشن فینکا، به بیشتر دوره‌ها و مسیرها روی موبایل دسترسی دارید، تمرین می‌کنید و یادگیری رو هم‌زمان روی موبایل و دسکتاپ ادامه می‌دید.