تعديل المحتوى الموضوع * -- اختر موضوع --C# CourseCSSHTMLJava ScriptPython Fundamentals اساسياتSQL Serverرواية الفيل الأزرقمواضيع متنوعة الوحدة * -- اختر وحدة --1. الوحدة 1: الانطلاقة (1)2. الوحدة 2: الأساسيات (2)3. الوحدة 3: التحكم في مسار البرنامج (3)4. الوحدة 4: هياكل البيانات (4)5. الوحدة 5: الدوال وتنظيم الكود (5)6. الوحدة 6: الملفات والمدخلات والمخرجات (6)7. الوحدة 7: البرمجة الكائنية OOP (7)8. الوحدة 8: مكتبات Python الأساسية (8)9. الوحدة 9: مقدمة تحليل البيانات (9) ترتيب الدرس ترتيب ظهور الدرس داخل الوحدة عنوان المحتوى * محتوى الدرس * (15606 حرف) <!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>الدرس 9.5: مقدمة في Matplotlib للرسم البياني</title> <script src="https://cdn.tailwindcss.com"></script> <link href="https://fonts.googleapis.com/css2?family=Tajawal:wght@300;400;700;800&display=swap" rel="stylesheet"> <style> body { font-family: 'Tajawal', sans-serif; background-color: #f8fafc; color: #1e293b; } .section-card { background: white; border-radius: 1rem; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); padding: 2rem; margin-bottom: 2rem; border-right: 5px solid #10b981; } .icon-box { display: inline-flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border-radius: 0.5rem; margin-left: 0.75rem; font-size: 1.7rem; } .code-block { position: relative; background-color: #1e293b; color: #e2e8f0; border-radius: 0.75rem; padding: 1.5rem; font-family: 'Courier New', monospace; overflow-x: auto; text-align: left; direction: ltr; margin-top: 1rem; white-space: pre; font-size: 1.05rem; border: 2px solid #0f172a; } .copy-btn { position: absolute; top: 0.5rem; right: 0.5rem; background-color: #334155; color: white; border: 1px solid #475569; padding: 0.3rem 0.9rem; border-radius: 0.25rem; font-size: 0.85rem; cursor: pointer; transition: 0.2s; font-family: 'Tajawal', sans-serif; } .copy-btn:hover { background-color: #475569; } .copy-btn.copied { background-color: #10b981; border-color: #10b981; } .try-btn { margin-top: 0.5rem; background-color: #10b981; color: white; padding: 0.55rem 1.2rem; border-radius: 0.45rem; font-size: 0.95rem; font-weight: 700; display: inline-block; cursor: pointer; transition: 0.2s; box-shadow: 0 3px 5px rgba(16, 185, 129, 0.22); } .try-btn:hover { background-color: #059669; transform: translateY(-1px); box-shadow: 0 4px 8px rgba(16, 185, 129, 0.28); } .py-comment { color:#94a3b8; font-style:italic; } .py-str { color:#4ade80; } .py-func { color:#60a5fa; } .py-num { color:#facc15; } .py-import { color:#a5b4fc; font-weight:bold; } .py-name { color:#fda4af; } </style> </head> <body> <div class="p-4 md:p-8 max-w-6xl mx-auto"> <!-- Header --> <header class="text-center mb-12"> <h1 class="text-4xl md:text-5xl font-extrabold text-green-700 mb-4"> الدرس 9.5: مقدمة في Matplotlib للرسم البياني </h1> <p class="text-2xl text-gray-600"> تحويل الأرقام إلى رسوم بيانية تساعدك على فهم البيانات بسرعة </p> </header> <!-- Section 1: مقدمة --> <section class="section-card"> <h2 class="text-3xl font-bold mb-6 flex items-center"> <span class="icon-box bg-green-100 text-green-700">📈</span> ما هي Matplotlib ولماذا نستخدمها؟ </h2> <p class="text-xl text-gray-700 mb-4"> مكتبة <strong>Matplotlib</strong> هي أشهر مكتبة في Python لإنشاء الرسوم البيانية. تُستخدم كثيرًا مع <strong>NumPy</strong> و<strong>Pandas</strong> في تحليل البيانات، وتسمح لك بـ: </p> <ul class="list-disc pr-6 text-gray-700 text-xl space-y-2"> <li>إنشاء الرسوم الخطية (Line plots).</li> <li>الرسوم العمودية (Bar charts).</li> <li>الرسوم النقطية (Scatter plots).</li> <li>وأنواع أخرى كثيرة (Pie, Histograms, ...).</li> </ul> <p class="text-xl text-gray-700 mt-4"> تثبيت المكتبة (مرة واحدة فقط): <br> <code>pip install matplotlib</code> </p> <p class="text-xl text-gray-700 mt-4"> في هذا الدرس سنركز على الأساسيات التي تكفيك لبداية قوية في الرسم البياني. </p> </section> <!-- Section 2: أول رسم خطي --> <section class="section-card" style="border-right-color:#0ea5e9;"> <h2 class="text-3xl font-bold mb-6 flex items-center"> <span class="icon-box bg-blue-100 text-blue-700">📉</span> إنشاء أول رسم خطي (Line Plot) </h2> <p class="text-xl text-gray-700 mb-4"> سنرسم علاقة بسيطة بين الأيام وعدد الزوار لموقع ما خلال أسبوع. </p> <div class="code-block"> <button class="copy-btn" onclick="copyCode('mpl-line', this)">نسخ</button> <code id="mpl-line"> <span class="py-import">import</span> matplotlib.pyplot <span class="py-func">as</span> plt days = [<span class="py-str">"Sat"</span>, <span class="py-str">"Sun"</span>, <span class="py-str">"Mon"</span>, <span class="py-str">"Tue"</span>, <span class="py-str">"Wed"</span>, <span class="py-str">"Thu"</span>, <span class="py-str">"Fri"</span>] visitors = [<span class="py-num">120</span>, <span class="py-num">150</span>, <span class="py-num">180</span>, <span class="py-num">170</span>, <span class="py-num">200</span>, <span class="py-num">220</span>, <span class="py-num">190</span>] plt.plot(days, visitors) plt.title(<span class="py-str">"عدد زوار الموقع خلال الأسبوع"</span>) plt.xlabel(<span class="py-str">"اليوم"</span>) plt.ylabel(<span class="py-str">"عدد الزوار"</span>) plt.show() </code> </div> <button class="try-btn" onclick="runCode('mpl-line')">▶️ تجربة الكود</button> <p class="text-xl text-gray-700 mt-4"> الدالة <strong>plt.show()</strong> تعرض الرسم في نافذة منفصلة (أو داخل بيئة Jupyter إذا كنت تستخدمها). </p> </section> <!-- Section 3: الرسم العمودي Bar Chart --> <section class="section-card" style="border-right-color:#f97316;"> <h2 class="text-3xl font-bold mb-6 flex items-center"> <span class="icon-box bg-orange-100 text-orange-700">📊</span> إنشاء رسم عمودي (Bar Chart) </h2> <p class="text-xl text-gray-700 mb-4"> الرسوم العمودية مفيدة للمقارنة بين فئات (Categories)، مثل مقارنة مبيعات 4 منتجات مختلفة: </p> <div class="code-block"> <button class="copy-btn" onclick="copyCode('mpl-bar', this)">نسخ</button> <code id="mpl-bar"> <span class="py-import">import</span> matplotlib.pyplot <span class="py-func">as</span> plt products = [<span class="py-str">"A"</span>, <span class="py-str">"B"</span>, <span class="py-str">"C"</span>, <span class="py-str">"D"</span>] sales = [<span class="py-num">50</span>, <span class="py-num">80</span>, <span class="py-num">40</span>, <span class="py-num">90</span>] plt.bar(products, sales) plt.title(<span class="py-str">"مبيعات المنتجات خلال الشهر"</span>) plt.xlabel(<span class="py-str">"المنتج"</span>) plt.ylabel(<span class="py-str">"عدد الوحدات المباعة"</span>) plt.show() </code> </div> <button class="try-btn" onclick="runCode('mpl-bar')">▶️ تجربة الكود</button> <p class="text-xl text-gray-700 mt-4"> يمكن التعديل على الألوان، الحواف، وعرض الأعمدة لاحقًا، لكن الآن نركز على الفكرة الأساسية. </p> </section> <!-- Section 4: الرسم النقطي Scatter Plot --> <section class="section-card" style="border-right-color:#6366f1;"> <h2 class="text-3xl font-bold mb-6 flex items-center"> <span class="icon-box bg-indigo-100 text-indigo-700">⚪</span> الرسم النقطي (Scatter Plot) </h2> <p class="text-xl text-gray-700 mb-4"> الرسم النقطي مفيد لمعرفة العلاقة بين متغيرين، مثل: عدد ساعات المذاكرة والدرجة في الاختبار: </p> <div class="code-block"> <button class="copy-btn" onclick="copyCode('mpl-scatter', this)">نسخ</button> <code id="mpl-scatter"> <span class="py-import">import</span> matplotlib.pyplot <span class="py-func">as</span> plt study_hours = [<span class="py-num">1</span>, <span class="py-num">2</span>, <span class="py-num">3</span>, <span class="py-num">4</span>, <span class="py-num">5</span>, <span class="py-num">6</span>] scores = [<span class="py-num">50</span>, <span class="py-num">55</span>, <span class="py-num">65</span>, <span class="py-num">70</span>, <span class="py-num">80</span>, <span class="py-num">90</span>] plt.scatter(study_hours, scores) plt.title(<span class="py-str">"العلاقة بين ساعات المذاكرة والدرجة"</span>) plt.xlabel(<span class="py-str">"ساعات المذاكرة"</span>) plt.ylabel(<span class="py-str">"الدرجة في الاختبار"</span>) plt.show() </code> </div> <button class="try-btn" onclick="runCode('mpl-scatter')">▶️ تجربة الكود</button> <p class="text-xl text-gray-700 mt-4"> من خلال هذا الرسم يمكن ملاحظة أن زيادة ساعات المذاكرة مرتبطة غالبًا بزيادة الدرجة. </p> </section> <!-- Section 5: استخدام Matplotlib مع Pandas --> <section class="section-card" style="border-right-color:#8b5cf6;"> <h2 class="text-3xl font-bold mb-6 flex items-center"> <span class="icon-box bg-purple-100 text-purple-700">🤝</span> دمج Matplotlib مع Pandas </h2> <p class="text-xl text-gray-700 mb-4"> Pandas تتكامل مع Matplotlib بشكل ممتاز، حيث يمكن رسم الأعمدة مباشرة من DataFrame: </p> <div class="code-block"> <button class="copy-btn" onclick="copyCode('mpl-pandas', this)">نسخ</button> <code id="mpl-pandas"> <span class="py-import">import</span> pandas <span class="py-func">as</span> pd <span class="py-import">import</span> matplotlib.pyplot <span class="py-func">as</span> plt data = { <span class="py-str">"month"</span>: [<span class="py-str">"Jan"</span>, <span class="py-str">"Feb"</span>, <span class="py-str">"Mar"</span>, <span class="py-str">"Apr"</span>], <span class="py-str">"sales"</span>: [<span class="py-num">10000</span>, <span class="py-num">12000</span>, <span class="py-num">9000</span>, <span class="py-num">15000</span>] } df = pd.DataFrame(data) plt.plot(df[<span class="py-str">"month"</span>], df[<span class="py-str">"sales"</span>], marker=<span class="py-str">"o"</span>) plt.title(<span class="py-str">"مبيعات الشركة خلال الشهور"</span>) plt.xlabel(<span class="py-str">"الشهر"</span>) plt.ylabel(<span class="py-str">"المبيعات"</span>) plt.show() </code> </div> <button class="try-btn" onclick="runCode('mpl-pandas')">▶️ تجربة الكود</button> <p class="text-xl text-gray-700 mt-4"> لاحظ استخدام <strong>marker="o"</strong> لإظهار نقطة على كل قيمة، مما يجعل الرسم أوضح. </p> </section> <!-- Section 6: تحسينات بسيطة على الرسم --> <section class="section-card" style="border-right-color:#f97316;"> <h2 class="text-3xl font-bold mb-6 flex items-center"> <span class="icon-box bg-orange-100 text-orange-700">✨</span> تحسينات بسيطة: عنوان، شبكة، وحفظ الرسم كصورة </h2> <p class="text-xl text-gray-700 mb-4"> يمكن إضافة شبكة (grid) وحفظ الرسم كصورة PNG بسهولة: </p> <div class="code-block"> <button class="copy-btn" onclick="copyCode('mpl-extra', this)">نسخ</button> <code id="mpl-extra"> <span class="py-import">import</span> matplotlib.pyplot <span class="py-func">as</span> plt x = [<span class="py-num">1</span>, <span class="py-num">2</span>, <span class="py-num">3</span>, <span class="py-num">4</span>, <span class="py-num">5</span>] y = [<span class="py-num">2</span>, <span class="py-num">4</span>, <span class="py-num">1</span>, <span class="py-num">3</span>, <span class="py-num">5</span>] plt.plot(x, y, marker=<span class="py-str">"o"</span>) plt.title(<span class="py-str">"مثال على رسم محسّن"</span>) plt.xlabel(<span class="py-str">"المحور السيني X"</span>) plt.ylabel(<span class="py-str">"المحور الصادي Y"</span>) plt.grid(<span class="py-func">True</span>) <span class="py-comment"># إظهار شبكة</span> <span class="py-comment"># حفظ الرسم في ملف</span> plt.savefig(<span class="py-str">"my_plot.png"</span>, dpi=<span class="py-num">300</span>) plt.show() </code> </div> <button class="try-btn" onclick="runCode('mpl-extra')">▶️ تجربة الكود</button> <p class="text-xl text-gray-700 mt-4"> سيتم حفظ الصورة في نفس المجلد الذي تعمل فيه، باسم <strong>my_plot.png</strong>. </p> </section> <!-- Section 7: تمرين عملي --> <section class="section-card" style="border-right-color:#ec4899;"> <h2 class="text-3xl font-bold mb-6 flex items-center"> <span class="icon-box bg-pink-100 text-pink-700">🧪</span> تمرين عملي (مرقّم) </h2> <div class="bg-pink-50 p-6 rounded-lg border border-pink-200 text-right"> <h3 class="text-pink-900 font-bold mb-4 text-2xl">المطلوب منك:</h3> <ol class="space-y-4 text-gray-700 text-xl list-decimal pr-6"> <li> أنشئ رسمًا خطيًا (Line Plot) لدرجاتك في 5 اختبارات متتالية، مع عنوان ومحوري X/Y باللغة العربية. </li> <li> أنشئ رسمًا عموديًا (Bar Chart) لمبيعات 4 منتجات في متجر إلكتروني، ثم أضف عناوين للمحاور والعنوان الرئيسي. </li> <li> أنشئ رسمًا نقطيًا (Scatter Plot) يوضح العلاقة بين: <br> عدد ساعات النوم وجودة التركيز خلال اليوم (قيم تقديرية من عندك). </li> <li> أنشئ DataFrame يحتوي على: <br> الأعمدة: <strong>month, revenue</strong> لـ 6 شهور، ثم استخدم Matplotlib لرسم خط يوضح تطور الإيرادات. </li> <li> جرّب حفظ أحد الرسوم التي أنشأتها في ملف PNG، واكتب اسم الملف مثل: <code>"report_chart.png"</code>، ثم افتحه من المجلد وتأكد من شكله. </li> </ol> </div> </section> <footer class="text-center text-gray-400 text-lg mt-8 pb-8"> الدرس 9.5 — مقدمة في Matplotlib للرسم البياني </footer> </div> <script> function copyCode(elementId, btnElement=null) { const text = document.getElementById(elementId).innerText; const textarea = document.createElement('textarea'); textarea.value = text; document.body.appendChild(textarea); textarea.select(); document.execCommand('copy'); textarea.remove(); if (btnElement) { const original = btnElement.innerText; btnElement.innerText = "تم النسخ!"; btnElement.classList.add('copied'); setTimeout(() => { btnElement.innerText = original; btnElement.classList.remove('copied'); }, 1500); } } function runCode(elementId) { copyCode(elementId); window.open("/python/trypython", "_blank"); } </script> </body> </html> حفظ إلغاء حفظ وإضافة جديد