گروه بندی و دسته بندی داده در نمودار ها با کتابخانه Observable Plot

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

در این نوشته، سعی شده تا 2 مفهوم دسته‌بندی یا پارتیشن بندی داده (faceting) و گروه‌بندی و اعمال توابع گروهی روی داده (grouping) توضیح داده شود.

برای درک بهتر موارد، از مثال‌های مختلفی استفاده شده است که توضیحات هر نمودار را در همان بخش می‌بینیم.

 

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

 

 

 

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

کد اصلی ما در تابع plot.barY است. آپشن اصلی که این قابلیت را برای ما فراهم می‌کند، استفاده از کانفیگ fx می‌باشد. این آپشن به ما این قابلیت را می‌دهد که داده‌ها را در محور x دسته‌بندی کنیم که اینجا بر اساس fx:sal یعنی سال، این اتفاق افتاده است.

همان طور که می‌بینید، بر روی محور x که به جلو می‌رویم، هر دسته داده مربوط به یک سال است.

اما در هر دسته، داده را بر اساس تایپ آن دسته‌بندی کردیم که این کار با تعیین x: type اتفاق افتاده. در اینجا x تعیین می‌کند که محور x در هر دسته، بر چه مبنایی باشد.

 

اما مثال بعدی

 

 

 

 

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

این کار به سادگی با حذف آپشن X اتفاق افتاده. یعنی تعیین نکردیم که داده‌های هر دسته، بر چه اساسی در محور x تفکیک شوند.

 

در مثال بعدی، کاربرد آپشن fill  را با هم می‌بینیم.

 

 

 

در مثال‌های قبلی، مقدار fill را با پارامتر type پر کرده بودیم و همان طور که می‌توانید ببینید، در مثال‌های قبلی، داده‌ها بر اساس تایپ شان، رنگ گرفته‌اند.

اما در این مثال، مقدار fill را به sal یا سال تغییر داده‌ایم که تفاوت را مشاهده می‌کنید که داده‌های هر سال، با رنگ متفاوتی از هم تفکیک شده‌اند.

 

اما برای درک بهتر دسته‌بندی یا همان آپشن fx در اینجا مثال دیگری می‌بینیم.

 

 

 

در این مثال، ما مقدار مبنای دسته‌بندی در محور افقی را برابر type داده‌ها قرار داده‌ایم و مشاهده می‌کنید که داده‌ها، بر اساس تایپ شان، دسته بندی شده‌اند.

دسته سمت چپ مربوط به تایپ cheque  و دسته سمت راست مربوط به تایپ note  می‌باشد. و با تعیین مقدار x:sal تعیین کرده‌ایم که هر دسته، بر اساس سالش در محور افقی، تفکیک شود.

 

اما در مثال انتهایی، قصد داریم تا شما را با گروه‌بندی و توابع گروهی آشنا کنیم. منظور ار توابع گروهی، توابعی مثل min,max,sum,avg,count می‌باشند که بر روی هر گروه داده اعمال می‌شوند.

 

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

برای درک بهتر مساله، کد زیر را ببینید.

 

 

اگر به نمودار دقت کنید، برای سال 96، مقدار 13175 را نشان داده که حاصل جمع 7958+5217 می‌باشد.

 

 

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

 

برای اطلاعات بیشتر در مورد دسته‌بندی یا پارتیشن‌بندی به بخش faceting در مستندات اصلی به اینجا مراجعه کنید.

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