المخططات الفرعية والتخطيطات
ادمج عدة مخططات
المخططات الفرعية والتخطيطات درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
لماذا نستخدم مخططات متعددة؟
غالبًا لا يكفي مخطط واحد. قد ترغبون في مقارنة عدة طرق عرض جنبًا إلى جنب، أو تقسيم رسم مزدحم إلى لوحات أصغر. تسمي Matplotlib ذلك ترتيب عدة Axes داخل Figure واحدة.
الأداة الأساسية هي plt.subplots(rows, cols).
شبكة من مناطق الرسم
ينشئ fig, axes = plt.subplots(2, 3) شكلًا يحتوي على شبكة من صفين وثلاثة أعمدة، أي ست مناطق رسم. وتكون النتيجة axes مصفوفة ثنائية الأبعاد تفهرسونها مثل axes[0][1].
إجمالي عدد اللوحات يساوي ببساطة عدد الصفوف مضروبًا في عدد الأعمدة.
rows, cols = 2, 3
total = rows * cols
print('Grid', rows, 'x', cols, '=', total, 'axes')
for r in range(rows):
for c in range(cols):
print('panel at', (r, c))فهرسة مصفوفة مناطق الرسم
عند استخدام صف واحد، تكون axes أحادية الأبعاد: استخدموا axes[0] وaxes[1]. أما مع شبكة كاملة فتكون ثنائية الأبعاد: axes[row][col].
عند استخدام منطقة رسم فرعية واحدة، لا حاجة إلى الفهرسة إطلاقًا.
التكرار عبر اللوحات
من الأنماط النظيفة تسطيح الشبكة والتكرار عليها، مع إقران كل منطقة رسم ببياناتها. يتجنب ذلك تكرار تعليمات متشابهة تقريبًا لكل لوحة.
datasets = ['A', 'B', 'C', 'D']
# imagine axes flattened to a list of 4
for i, name in enumerate(datasets):
print('Plot dataset', name, 'on flat axes index', i)المحاور المشتركة
عندما تشترك اللوحات في مقياس واحد، مرروا sharex=True أو sharey=True. عندها تستخدم المناطق الفرعية نطاقًا مشتركًا، مما يجعل المقارنات عادلة ويزيل تسميات التدريجات المكررة.
وهذا مثالي للسلاسل الزمنية المتراصة.
حجم الشكل للشبكات
تحتاج الشبكة إلى مساحة أكبر من الرسم الواحد. حددوا figsize=(width, height) بالبوصات عند استدعاء subplots. والقاعدة التقريبية هي زيادة الحجم بما يتناسب مع عدد الأعمدة والصفوف.
cols, rows = 3, 2
per_panel_w, per_panel_h = 3, 2.5
print('Suggested figsize:', (cols * per_panel_w, rows * per_panel_h))المسافات بين اللوحات
قد تتزاحم اللوحات. تعالج fig.tight_layout() معظم الحالات تلقائيًا. ولتحكم أدق، استخدموا fig.subplots_adjust(wspace=0.4, hspace=0.4) لتحديد الفجوتين الأفقية والرأسية.
تعني القيم الأكبر مساحة أكبر بين المناطق الفرعية.
التخطيطات غير المنتظمة باستخدام GridSpec
ليست كل التخطيطات عبارة عن شبكة منتظمة. تتيح GridSpec لمنطقة رسم واحدة أن تمتد عبر عدة صفوف أو أعمدة، مثل مخطط عريض في الأعلى ومخططين صغيرين أسفله.
تحددون الشبكة أولًا، ثم تقطعونها كما تفعلون مع مصفوفة لوضع كل منطقة رسم.
التخطيط للامتدادات
فكروا في شرائح GridSpec باعتبارها نطاقات. يكون المخطط العلوي الممتد عبر جميع الأعمدة هو gs[0, :]، بينما يكون المخطط السفلي الأيسر هو gs[1, 0]. يساعد التخطيط للشرائح على الورق أولًا في تجنب الالتباس.
layout = {
'header': '[0, :] (full width)',
'left': '[1, 0] (bottom left)',
'right': '[1, 1] (bottom right)',
}
for name, slot in layout.items():
print(name.ljust(7), slot)شكل واحد، قصة واحدة
ينبغي أن يروي الشكل متعدد اللوحات قصة واحدة متماسكة. استخدموا fig.suptitle() مشتركًا، وألوانًا متسقة، ومقاييس مشتركة حتى تُقرأ اللوحات كوحدة واحدة لا كتركيب عشوائي.
تخصيص كل لوحة على حدة
بما أن كل خلية تمثل منطقة رسم مستقلة، يمكنكم تخصيصها بشكل منفصل. يضع axes[0][0].set_title('Sales') عنوانًا للوحة العلوية اليسرى فقط، بينما يضع axes[1][1].set_ylabel('Cost') تسمية للوحة السفلية اليمنى فقط.
هذه الاستقلالية هي بالضبط سبب تميز الأسلوب الكائني التوجه عند التعامل مع الشبكات.
تحقق سريع
اختبروا مدى استيعابكم لتخطيطات اللوحات المتعددة.
مراجعة
يمكنكم الآن جمع المخططات معًا:
- ينشئ
plt.subplots(rows, cols)شبكة من مناطق الرسم - فهرسوا باستخدام
axes[row][col]أو سطّحوا الشبكة وكرروا عليها - توحّد
sharex/shareyالمقاييس، بينما يحددfigsizeحجم الشبكة - يدير
tight_layoutوsubplots_adjustالمسافات - تتيح
GridSpecإنشاء لوحات تمتد عبر عدة خلايا
الأسئلة الشائعة
هل درس «المخططات الفرعية والتخطيطات» مجاني؟
نعم — نص درس «المخططات الفرعية والتخطيطات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «المخططات الفرعية والتخطيطات»؟
ادمج عدة مخططات تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «المخططات الفرعية والتخطيطات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الأشكال والمحاور
- المخططات الخطية والعمودية والمبعثرة
- تخصيص المخططات
- المخططات الفرعية والتخطيطات