# تصور النسب |![رسم توضيحي من [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/11-Visualizing-Proportions.png)| |:---:| |تصور النسب - _رسم توضيحي من [@nitya](https://twitter.com/nitya)_ | في هذا الدرس، ستستخدم مجموعة بيانات تركز على الطبيعة لتصور النسب، مثل عدد الأنواع المختلفة من الفطريات الموجودة في مجموعة بيانات عن الفطر. دعونا نستكشف هذه الفطريات المثيرة للاهتمام باستخدام مجموعة بيانات مأخوذة من Audubon تحتوي على تفاصيل حول 23 نوعًا من الفطر ذو الخياشيم من عائلتي Agaricus وLepiota. ستجرب تصورات ممتعة مثل: - الرسوم البيانية الدائرية 🥧 - الرسوم البيانية الحلقية 🍩 - الرسوم البيانية الشبكية 🧇 > 💡 مشروع مثير للاهتمام يسمى [Charticulator](https://charticulator.com) من Microsoft Research يقدم واجهة مجانية تعتمد على السحب والإفلات لإنشاء تصورات البيانات. في أحد دروسهم التعليمية، يستخدمون أيضًا مجموعة بيانات الفطر هذه! لذا يمكنك استكشاف البيانات وتعلم المكتبة في نفس الوقت: [درس Charticulator](https://charticulator.com/tutorials/tutorial4.html). ## [اختبار ما قبل المحاضرة](https://ff-quizzes.netlify.app/en/ds/quiz/20) ## تعرف على الفطر الخاص بك 🍄 الفطر كائنات مثيرة للاهتمام. دعونا نستورد مجموعة بيانات لدراستها: ```python import pandas as pd import matplotlib.pyplot as plt mushrooms = pd.read_csv('../../data/mushrooms.csv') mushrooms.head() ``` يتم طباعة جدول يحتوي على بيانات رائعة للتحليل: | الفئة | شكل القبعة | سطح القبعة | لون القبعة | كدمات | الرائحة | ارتباط الخياشيم | تباعد الخياشيم | حجم الخياشيم | لون الخياشيم | شكل الساق | جذر الساق | سطح الساق فوق الحلقة | سطح الساق تحت الحلقة | لون الساق فوق الحلقة | لون الساق تحت الحلقة | نوع الغشاء | لون الغشاء | عدد الحلقات | نوع الحلقة | لون بصمة الأبواغ | التوزيع | الموطن | | --------- | --------- | ----------- | --------- | ------- | ------- | --------------- | ------------ | --------- | ---------- | ----------- | ---------- | ------------------------ | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | | سام | محدب | أملس | بني | كدمات | لاذع | حر | قريب | ضيق | أسود | متضخم | متساوٍ | أملس | أملس | أبيض | أبيض | جزئي | أبيض | واحدة | متدلية | أسود | متناثر | حضري | | صالح للأكل| محدب | أملس | أصفر | كدمات | لوزي | حر | قريب | عريض | أسود | متضخم | مضرب | أملس | أملس | أبيض | أبيض | جزئي | أبيض | واحدة | متدلية | بني | وفير | أعشاب | | صالح للأكل| جرس | أملس | أبيض | كدمات | يانسون | حر | قريب | عريض | بني | متضخم | مضرب | أملس | أملس | أبيض | أبيض | جزئي | أبيض | واحدة | متدلية | بني | وفير | مروج | | سام | محدب | قشري | أبيض | كدمات | لاذع | حر | قريب | ضيق | بني | متضخم | متساوٍ | أملس | أملس | أبيض | أبيض | جزئي | أبيض | واحدة | متدلية | أسود | متناثر | حضري | على الفور، تلاحظ أن جميع البيانات نصية. ستحتاج إلى تحويل هذه البيانات لتتمكن من استخدامها في رسم بياني. في الواقع، يتم تمثيل معظم البيانات ككائن: ```python print(mushrooms.select_dtypes(["object"]).columns) ``` الناتج هو: ```output Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor', 'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color', 'stalk-shape', 'stalk-root', 'stalk-surface-above-ring', 'stalk-surface-below-ring', 'stalk-color-above-ring', 'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number', 'ring-type', 'spore-print-color', 'population', 'habitat'], dtype='object') ``` خذ هذه البيانات وحوّل العمود 'الفئة' إلى فئة: ```python cols = mushrooms.select_dtypes(["object"]).columns mushrooms[cols] = mushrooms[cols].astype('category') ``` ```python edibleclass=mushrooms.groupby(['class']).count() edibleclass ``` الآن، إذا قمت بطباعة بيانات الفطر، يمكنك رؤية أنها قد تم تجميعها في فئات وفقًا لفئة السام/الصالح للأكل: | | شكل القبعة | سطح القبعة | لون القبعة | كدمات | الرائحة | ارتباط الخياشيم | تباعد الخياشيم | حجم الخياشيم | لون الخياشيم | شكل الساق | ... | سطح الساق تحت الحلقة | لون الساق فوق الحلقة | لون الساق تحت الحلقة | نوع الغشاء | لون الغشاء | عدد الحلقات | نوع الحلقة | لون بصمة الأبواغ | التوزيع | الموطن | | --------- | --------- | ----------- | --------- | ------- | ------- | --------------- | ------------ | --------- | ---------- | ----------- | --- | ------------------------ | ---------------------- | ---------------------- | --------- | ---------- | ----------- | --------- | ----------------- | ---------- | ------- | | الفئة | | | | | | | | | | | | | | | | | | | | | | | صالح للأكل| 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | ... | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | 4208 | | سام | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | ... | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | 3916 | إذا اتبعت الترتيب المعروض في هذا الجدول لإنشاء تسميات فئاتك، يمكنك إنشاء رسم بياني دائري: ## دائري! ```python labels=['Edible','Poisonous'] plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%') plt.title('Edible?') plt.show() ``` وها هو، رسم بياني دائري يظهر نسب هذه البيانات وفقًا لهاتين الفئتين من الفطر. من المهم جدًا ترتيب التسميات بشكل صحيح، خاصة هنا، لذا تأكد من التحقق من ترتيب مصفوفة التسميات! ![رسم بياني دائري](../../../../3-Data-Visualization/11-visualization-proportions/images/pie1-wb.png) ## الحلقات! الرسم البياني الحلقى هو نسخة أكثر جاذبية بصريًا من الرسم البياني الدائري، حيث يحتوي على ثقب في المنتصف. دعونا نلقي نظرة على بياناتنا باستخدام هذه الطريقة. انظر إلى الموائل المختلفة التي ينمو فيها الفطر: ```python habitat=mushrooms.groupby(['habitat']).count() habitat ``` هنا، تقوم بتجميع بياناتك حسب الموطن. هناك 7 موائل مدرجة، لذا استخدمها كتسميات لرسمك البياني الحلقي: ```python labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood'] plt.pie(habitat['class'], labels=labels, autopct='%1.1f%%', pctdistance=0.85) center_circle = plt.Circle((0, 0), 0.40, fc='white') fig = plt.gcf() fig.gca().add_artist(center_circle) plt.title('Mushroom Habitats') plt.show() ``` ![رسم بياني حلقي](../../../../3-Data-Visualization/11-visualization-proportions/images/donut-wb.png) يرسم هذا الكود رسمًا بيانيًا ودائرة مركزية، ثم يضيف تلك الدائرة إلى الرسم. قم بتعديل عرض الدائرة المركزية عن طريق تغيير `0.40` إلى قيمة أخرى. يمكن تعديل الرسوم البيانية الحلقية بطرق عدة لتغيير التسميات. يمكن تسليط الضوء على التسميات لتحسين القراءة. تعرف على المزيد في [التوثيق](https://matplotlib.org/stable/gallery/pie_and_polar_charts/pie_and_donut_labels.html?highlight=donut). الآن بعد أن عرفت كيفية تجميع بياناتك وعرضها كدائرة أو حلقة، يمكنك استكشاف أنواع أخرى من الرسوم البيانية. جرب الرسم البياني الشبكي، وهو مجرد طريقة مختلفة لاستكشاف الكميات. ## الشبكات! الرسم البياني الشبكي هو طريقة مختلفة لتصور الكميات كمصفوفة ثنائية الأبعاد من المربعات. جرب تصور الكميات المختلفة لألوان قبعات الفطر في هذه المجموعة. للقيام بذلك، تحتاج إلى تثبيت مكتبة مساعدة تسمى [PyWaffle](https://pypi.org/project/pywaffle/) واستخدام Matplotlib: ```python pip install pywaffle ``` حدد جزءًا من بياناتك لتجميعه: ```python capcolor=mushrooms.groupby(['cap-color']).count() capcolor ``` أنشئ رسمًا بيانيًا شبكيًا عن طريق إنشاء تسميات ثم تجميع بياناتك: ```python import pandas as pd import matplotlib.pyplot as plt from pywaffle import Waffle data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'], 'amount': capcolor['class'] } df = pd.DataFrame(data) fig = plt.figure( FigureClass = Waffle, rows = 100, values = df.amount, labels = list(df.color), figsize = (30,30), colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"], ) ``` باستخدام الرسم البياني الشبكي، يمكنك رؤية نسب ألوان قبعات الفطر بوضوح في هذه المجموعة. من المثير للاهتمام أن هناك العديد من الفطر ذي القبعات الخضراء! ![رسم بياني شبكي](../../../../3-Data-Visualization/11-visualization-proportions/images/waffle.png) ✅ يدعم PyWaffle استخدام الأيقونات داخل الرسوم البيانية باستخدام أيقونات متوفرة في [Font Awesome](https://fontawesome.com/). قم ببعض التجارب لإنشاء رسم بياني شبكي أكثر إثارة باستخدام الأيقونات بدلاً من المربعات. في هذا الدرس، تعلمت ثلاث طرق لتصور النسب. أولاً، تحتاج إلى تجميع بياناتك في فئات ثم تقرر الطريقة الأفضل لعرض البيانات - دائري، حلقي، أو شبكي. جميعها لذيذة وتمنح المستخدم لمحة فورية عن مجموعة البيانات. ## 🚀 التحدي حاول إعادة إنشاء هذه الرسوم البيانية اللذيذة في [Charticulator](https://charticulator.com). ## [اختبار ما بعد المحاضرة](https://ff-quizzes.netlify.app/en/ds/quiz/21) ## المراجعة والدراسة الذاتية في بعض الأحيان، ليس من الواضح متى يجب استخدام الرسم البياني الدائري أو الحلقي أو الشبكي. إليك بعض المقالات لقراءتها حول هذا الموضوع: https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402 قم ببعض البحث للعثور على مزيد من المعلومات حول هذا القرار الصعب. ## الواجب [جربه في Excel](assignment.md) --- **إخلاء المسؤولية**: تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية [Co-op Translator](https://github.com/Azure/co-op-translator). بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة تنشأ عن استخدام هذه الترجمة.