← LAMPIRAN MENULAMPIRAN 16 / 18
S1D4NG.5KR1P51.404 · ANNEX FILE
Lampiran 16. Program python untuk menganalisis ENSO
//⚠ S1D4NG.5KR1P51.404 — BIOHAZARD ZONE·//⚠ NO SHARP · NO NARCOTICS · NO WEIRD CARGO·//⚠ THE HUM IS LOUDER WHEN YOU NOTICE IT·//⚠ ERROR 404 RECOVERED — STILL WRONG·//⚠ LEVEL 0 · DO NOT TRUST THE CORRIDOR·
Lampiran 16. Program python untuk menganalisis ENSO
| import matplotlib.pyplot as plt import matplotlib.colors as mcolors import matplotlib.patches as mpatches import numpy as np oni_2025 = { "Jan": -0.4, "Feb": -0.2, "Mar": -0.1, "Apr": 0.0, "May": 0.0, "Jun": 0.0, "Jul": -0.1, "Aug": -0.3, "Sep": -0.4, "Oct": -0.5, "Nov": -0.6, "Dec": -0.5, } def main(): months = list(oni_2025.keys()) vals = list(oni_2025.values()) x = np.arange(len(months)) fig, ax = plt.subplots(figsize=(10, 5.5)) colors = ["#d73027" if v > 0 else "#4575b4" for v in vals] bars = ax.bar(x, vals, color=colors, width=0.65, edgecolor="black", linewidth=0.5, zorder=3) ax.plot(x, vals, "k-o", markersize=5, linewidth=1.2, zorder=4) ax.axhline(y=0.5, color="red", linestyle="--", linewidth=0.8, alpha=0.7) ax.axhline(y=-0.5, color="blue", linestyle="--", linewidth=0.8, alpha=0.7) ax.axhline(y=0, color="gray", linestyle="-", linewidth=0.5) ax.text(11.3, 0.5, "El Niño", fontsize=8, color="red", va="bottom", ha="left") ax.text(11.3, -0.5, "La Niña", fontsize=8, color="blue", va="top", ha="left") ax.axhspan(-0.5, 0.5, alpha=0.08, color="gray", zorder=0) march_idx = 2 rect = mpatches.FancyBboxPatch( (march_idx - 0.45, min(0, vals[march_idx]) - 0.15), 0.9, abs(vals[march_idx]) + 0.3, boxstyle="round,pad=0.05", linewidth=2.0, edgecolor="black", facecolor="none", zorder=5 ) ax.add_patch(rect) ax.text(march_idx, vals[march_idx] + 0.12, "Periode\nAnalisis", fontsize=7, ha="center", va="bottom", fontweight="bold", color="black") for i, v in enumerate(vals): yoff = 0.05 if v >= 0 else -0.05 va = "bottom" if v >= 0 else "top" ax.text(i, v + yoff, f"{v:.1f}", ha="center", va=va, fontsize=7, fontweight="bold") ax.set_xticks(x) ax.set_xticklabels(months, fontsize=9) ax.set_ylabel("ONI (°C)", fontsize=11) ax.set_xlim(-0.5, 11.8) ax.set_ylim(-1.0, 1.0) ax.tick_params(axis="y", labelsize=9) ax.grid(axis="y", alpha=0.3) ax.text(0.5, -0.12, "Sumber: NOAA CPC — Climate Prediction Center (ONI v5)", transform=ax.transAxes, fontsize=7, ha="center", color="gray") ax.annotate( "ENSO-Neutral\n(Transisi dari La Niña 2024–25)", xy=(2, -0.1), xytext=(5.5, -0.75), fontsize=8, ha="center", arrowprops=dict(arrowstyle="->", color="black", lw=0.8), bbox=dict(boxstyle="round,pad=0.3", facecolor="lightyellow", edgecolor="gray", alpha=0.8), ) plt.tight_layout() out_path = r"~\Skripsi\output\enso_oni_2025.png" fig.savefig(out_path, dpi=250, bbox_inches="tight", facecolor="white") print(f"Saved: {out_path}") plt.close() if __name__ == "__main__": main() |