{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# Visualisasi Data Dasar dengan Matplotlib\n",
        "\n",
        "**Matplotlib** adalah pustaka visualisasi data tingkat dasar yang memberikan kontrol penuh atas setiap elemen grafik (garis, sumbu, label, warna, dan legenda)."
      ],
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 1. Inisiasi & Membuat Line Plot (Tren Waktu)\n",
        "Line Plot sangat ideal untuk menampilkan tren data deret waktu (*time series*)."
      ],
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {},
      "source": [
        "import matplotlib.pyplot as plt\n",
        "import pandas as pd\n",
        "\n",
        "# Data tren penjualan bulanan\n",
        "bulan = ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agu']\n",
        "penjualan_2025 = [120, 135, 148, 160, 175, 190, 210, 230]\n",
        "penjualan_2026 = [140, 150, 170, 185, 205, 220, 245, 270]\n",
        "\n",
        "plt.figure(figsize=(10, 5))\n",
        "plt.plot(bulan, penjualan_2025, marker='o', linestyle='--', color='#2563eb', label='Tahun 2025')\n",
        "plt.plot(bulan, penjualan_2026, marker='s', linestyle='-', color='#059669', label='Tahun 2026')\n",
        "\n",
        "plt.title('Perbandingan Tren Penjualan Bulanan (2025 vs 2026)', fontsize=14, fontweight='bold')\n",
        "plt.xlabel('Bulan', fontsize=11)\n",
        "plt.ylabel('Total Penjualan (Unit)', fontsize=11)\n",
        "plt.legend()\n",
        "plt.grid(True, linestyle=':', alpha=0.6)\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "outputs": [],
      "execution_count": null
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 2. Bar Plot (Perbandingan Antar Kategori)\n",
        "Bar Plot digunakan untuk membandingkan besaran nilai diskrit antar kategori."
      ],
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {},
      "source": [
        "kategori_kursus = ['Python', 'SQL', 'Data Science', 'Web Dev', 'Cloud']\n",
        "jumlah_peserta = [450, 380, 520, 290, 310]\n",
        "\n",
        "plt.figure(figsize=(9, 5))\n",
        "bars = plt.bar(kategori_kursus, jumlah_peserta, color='#3b82f6', edgecolor='#1e40af')\n",
        "\n",
        "# Menambahkan label angka di atas setiap batang\n",
        "for bar in bars:\n",
        "    yval = bar.get_height()\n",
        "    plt.text(bar.get_x() + bar.get_width()/2, yval + 8, f\"{int(yval)}\", ha='center', fontweight='bold')\n",
        "\n",
        "plt.title('Jumlah Peserta Berdasarkan Kategori Kursus', fontsize=13, fontweight='bold')\n",
        "plt.xlabel('Kategori Kursus')\n",
        "plt.ylabel('Jumlah Siswa Terdaftar')\n",
        "plt.ylim(0, 600)\n",
        "plt.grid(axis='y', linestyle=':', alpha=0.7)\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "outputs": [],
      "execution_count": null
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## 3. Histogram & Scatter Plot\n",
        "- **Histogram**: Melihat sebaran frekuensi data numerik kontinu.\n",
        "- **Scatter Plot**: Memeriksa korelasi / hubungan antara dua variabel kuantitatif."
      ],
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {},
      "source": [
        "import numpy as np\n",
        "\n",
        "# 1. Histogram Nilai Ujian\n",
        "np.random.seed(42)\n",
        "nilai_mahasiswa = np.random.normal(loc=78, scale=8, size=200)\n",
        "\n",
        "plt.figure(figsize=(10, 4))\n",
        "plt.hist(nilai_mahasiswa, bins=15, color='#8b5cf6', edgecolor='white')\n",
        "plt.title('Distribusi Sebaran Nilai Mahasiswa', fontsize=13, fontweight='bold')\n",
        "plt.xlabel('Rentang Nilai')\n",
        "plt.ylabel('Frekuensi')\n",
        "plt.grid(axis='y', linestyle=':', alpha=0.6)\n",
        "plt.show()\n",
        "\n",
        "# 2. Scatter Plot: Jam Belajar vs Nilai Ujian\n",
        "jam_belajar = np.random.uniform(2, 10, size=50)\n",
        "nilai_ujian = 50 + (jam_belajar * 4.5) + np.random.normal(0, 3, size=50)\n",
        "\n",
        "plt.figure(figsize=(9, 5))\n",
        "plt.scatter(jam_belajar, nilai_ujian, color='#ef4444', alpha=0.8, edgecolors='black')\n",
        "plt.title('Hubungan Waktu Belajar terhadap Nilai Ujian', fontsize=13, fontweight='bold')\n",
        "plt.xlabel('Waktu Belajar (Jam / Minggu)')\n",
        "plt.ylabel('Nilai Ujian Akhir')\n",
        "plt.grid(True, linestyle=':', alpha=0.6)\n",
        "plt.show()"
      ],
      "outputs": [],
      "execution_count": null
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "name": "python",
      "version": "3.11.0"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 2
}