الدرس 7 من 8

الرسوم البيانية

رسمة واحدة بتوريك اللي جدول كامل مش هيوريهولك.

اختار الرسمة حسب السؤال

سؤالكالرسمة
بيتغير إزاي مع الوقت؟Line chart
مين أكبر من مين؟Bar chart
الأرقام متوزعة إزاي؟Histogram
فيه علاقة بين متغيرين؟Scatter plot

Line chart: التغير مع الوقت

line.py
import matplotlib.pyplot as plt

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
revenue = [42, 48, 45, 61, 70, 78]            # thousands EGP

plt.figure(figsize=(7, 3.5))
plt.plot(months, revenue, marker="o", color="#3776AB", linewidth=2.5)
plt.title("Monthly revenue (K EGP)")
plt.ylabel("Revenue")
plt.grid(alpha=0.3)
plt.show()

Bar chart: المقارنة

bar.py
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("orders.csv")
df["revenue"] = df["qty"] * df["price"]
by_city = df.groupby("city")["revenue"].sum().sort_values()

plt.figure(figsize=(7, 3.5))
plt.barh(by_city.index, by_city.values, color="#3776AB")
plt.title("Revenue by city (EGP)")
plt.show()

Histogram: التوزيع

hist.py
import numpy as np
import matplotlib.pyplot as plt

rng = np.random.default_rng(7)
delivery_days = rng.normal(loc=3, scale=1, size=500).clip(0.5, 8)

plt.figure(figsize=(7, 3.5))
plt.hist(delivery_days, bins=25, color="#FFD43B", edgecolor="#14213D")
plt.axvline(delivery_days.mean(), color="#D64545", linestyle="--", label="mean")
plt.title("Delivery time (days)")
plt.legend()
plt.show()

الشكل ده هو منحنى الجرس (التوزيع الطبيعي) اللي شفناه في المرحلة ٣. أغلب الأوردرات بتوصل في ٢ لـ ٤ أيام، والقليل بياخد أكتر.

Scatter: فيه علاقة؟ (مع Seaborn)

Seaborn مبنية فوق Matplotlib، وبتعمل رسوم إحصائية حلوة بسطر واحد، وبتفهم الـ DataFrames على طول.

scatter.py
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

rng = np.random.default_rng(1)
area = rng.uniform(60, 200, 80)
city = rng.choice(["Cairo", "Giza"], 80)
price = area * 20 + np.where(city == "Cairo", 700, 0) + rng.normal(0, 150, 80)
homes = pd.DataFrame({"area": area, "price_k": price, "city": city})

plt.figure(figsize=(7, 3.8))
sns.scatterplot(data=homes, x="area", y="price_k", hue="city",
                palette=["#3776AB", "#E0A800"])
plt.title("Area vs price (K EGP)")
plt.show()

واضح إن كل ما المساحة تزيد السعر بيزيد (علاقة موجبة)، وإن القاهرة أغلى شوية من الجيزة بنفس المساحة. ده بالظبط نوع العلاقات اللي هنعلّمها للموديل في المرحلة الجاية.

⚠ الرسمة ممكن تكدبلو المحور الرأسي مش بادئ من صفر في bar chart، فرق صغير بيبان ضخم. وخلي دايماً للرسمة عنوان، وللمحاور أسماء ووحدات. رسمة من غير عنوان محدش هيفهم هي بتقول إيه.
الدرس اللي فات