حل مشكلة عدم ظهور كل علامات المحور في رسم عمودي باستخدام ماتplotlib
تُعتبر الرسوم البيانية القطبية أحد الأساليب القوية لتصور البيانات في علم البيانات، حيث تسمح بعرض المعلومات بطريقة دائرية تجعلها أكثر تناسقاً وجاذبية. ومع ذلك، قد يواجه المستخدمون مشكلات عند استخدام مكتبة Matplotlib في Python، وخاصة عند عدم ظهور جميع علامات المحاور (xy-ticks) في الرسومات القطبية. في هذا المقال، سنستعرض كيفية إنشاء رسم بياني قطبي باستخدام مكتبة Matplotlib وحل مشكلة عدم عرض جميع علامات المحاور.
إنشاء الرسم البياني القطبي باستخدام Matplotlib
للشروع في استخدام مكتبة Matplotlib لرسم بيانات قطبية، نبدأ باستيراد المكتبة الضرورية. يُمكننا استيراد كل من matplotlib.pyplot و numpy لاستغلال وظائفهما القوية في الرسم وتحليل البيانات.
import matplotlib.pyplot as plt
import numpy as np
بعد ذلك، نقوم بإنشاء بيانات لنقطة يتم تمثيلها حول الدائرة. عادةً، نقوم بإنشاء 24 نقطة متباعدة بشكل متساوٍ حول الدائرة. نحن نستخدم دالة np.linspace
لتوليد نقاط من 0 إلى 2*π راديان، مع استبعاد نقطة النهاية لتجنب التكرار عند إكمال الدورة.
# قم بإنشاء 24 نقطة متباعدة بشكل متساوٍ حول الدائرة.
hours = np.linspace(0, 2 * np.pi, 24, endpoint=False)
days = np.arange(1, 32) # 31 يومًا
هنا، قمنا بإنشاء مصفوفة تحتوي على ساعات اليوم وعداد الأيام في الشهر.
رسم الشكل والتنسيق
الخطوة التالية هي إعداد الشكل الخاص بالرسم البياني. نستخدم دالة plt.subplots
مع تحديد متغير subplot الذي نريد استخدامه كـ ‘polar’، مما يسمح لنا بعرض الرسم البياني في نظام إحداثيات قطبية.
ax = plt.subplots(subplot_kw={'projection': 'polar'}, figsize=(8, 8))
الآن، يمكننا رسم البيانات. لنفترض أننا نرغب في رسم دائرة لكل يوم من الأيام، فيمكننا استخدام حلقة لتكرار الرسم لكل يوم:
for day in days:
ax.plot(hours, np.full_like(hours, day), label=f"Day {day}" if day == 1 else None)
وبعد ذلك، نضيف خطوطًا مرجعية إضافية لتوضيح الساعات في الرسم، مما يساعد في تحديد مكان البيانات:
ax.plot([hour, hour], [1, 31], color="gray", linestyle="--", alpha=0.6)
ضبط موضع علامات الساعات وظهورها
واحدة من القضايا الشائعة التي قد تواجهها مع الرسم البياني القطبي هي أن بعض علامات المحاور لا تظهر كما هو متوقع. لإجراء التعديلات اللازمة، يمكن استخدام العديد من الدوال. على سبيل المثال، يمكننا استخدام:
ax.set_theta_zero_location('N') # ضبط 0 في الاتجاه الشمالي.
ax.set_theta_direction(-1) # عكس الاتجاه.
ax.set_rmax(31) # تعيين الحد الأقصى لنصف القطر.
لإضافة علامات شعاعية على الرسم، يمكن استخدام:
ax.set_rticks([10, 20, 30]) # تحديد المواقع الخاصة بعلامات المحور الرأسي.
أما بالنسبة لعلامات الساعات، يمكن استخدامها كما يلي:
ax.set_xticks(hours)
ax.set_xticklabels([f"{int(h)}h" for h in np.linspace(0, 23, 24)]) # إضافة تسميات للساعة.
عرض الرسم البياني النهائي
بالطبع، يجب علينا بعد ذلك عرض الرسم البياني باستخدام الدالة plt.show()
. سيتم عرض الرسم البياني القطبي الذي يحتوي على جميع البيانات المطلوبة وعلامات المحاور، مما يساعدك في فهم المعلومات بشكل أفضل.
plt.show()
في نهاية المطاف، باستخدام هذه الدوال والإعدادات، يمكنك تجنب مشكلة عدم عرض جميع علامات المحاور في الرسم البياني القطبي الذي تم تصميمه باستخدام مكتبة Matplotlib. يعد هذا دليلاً مفيدًا للمبتدئين والمحترفين على حد سواء، لتعزيز تجاربهم في تصور البيانات بطريقة جذابة وسلسة.
باستخدام المعرفة المكتسبة أعلاه، يمكنك تحسين المشاريع الخاصة بك مع التركيز على البيانات القطبية، مما يوفر رؤى أوضح وأفضل حول المعلومات التي تحاول تحليلها.