Lingkungan kerja yang siap membuat setiap topik pada jalur ini dapat dijalankan ulang tanpa hambatan. Topik ini memandu pemasangan pustaka Python yang digunakan sepanjang jalur, pemeriksaan versinya, perkenalan dataset nilai ujian yang menjadi contoh kanonik, serta kebutuhan browser untuk bagian D3. Seluruh perintah dijalankan pada Python 3.12, dan versi setiap pustaka dicantumkan agar keluaran pada topik lain dapat dibandingkan dengan lingkungan sendiri.
Instalasi pustaka Python#
Enam pustaka Python menopang seluruh jalur. matplotlib menjadi fondasi gambar, pandas menangani tabel data, seaborn menambahkan lapisan statistik, plotly menghasilkan grafik interaktif, plotnine menerapkan gramatika grafis, dan Dash menyusun grafik menjadi aplikasi. pip adalah pengelola package Python yang mengambil pustaka dari repositori Python Package Index (PyPI), sehingga satu perintah memasang semuanya beserta dependensinya. Perintah yang sama dapat dijalankan ulang dengan aman karena pip menghentikan unduhan untuk pustaka yang sudah terpasang.
Jalankan perintah berikut dari terminal.
# pasang seluruh pustaka yang digunakan sepanjang jalur
pip install matplotlib plotly pandas plotnine seaborn dashRequirement already satisfied: matplotlib in /home/kal/.venv/lib/python3.12/site-packages (3.9.2)
Requirement already satisfied: plotly in /home/kal/.venv/lib/python3.12/site-packages (6.5.2)
Requirement already satisfied: pandas in /home/kal/.venv/lib/python3.12/site-packages (2.2.3)
Requirement already satisfied: plotnine in /home/kal/.venv/lib/python3.12/site-packages (0.15.2)
Requirement already satisfied: seaborn in /home/kal/.venv/lib/python3.12/site-packages (0.13.2)
Requirement already satisfied: dash in /home/kal/.venv/lib/python3.12/site-packages (4.5.0)
Requirement already satisfied: contourpy>=1.0.1 in /home/kal/.venv/lib/python3.12/site-packages (from matplotlib) (1.3.3)
Requirement already satisfied: cycler>=0.10 in /home/kal/.venv/lib/python3.12/site-packages (from matplotlib) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /home/kal/.venv/lib/python3.12/site-packages (from matplotlib) (4.62.1)
Requirement already satisfied: kiwisolver>=1.3.1 in /home/kal/.venv/lib/python3.12/site-packages (from matplotlib) (1.5.0)
Requirement already satisfied: numpy>=1.23 in /home/kal/.venv/lib/python3.12/site-packages (from matplotlib) (2.1.3)
Requirement already satisfied: packaging>=20.0 in /home/kal/.venv/lib/python3.12/site-packages (from matplotlib) (26.0)
Requirement already satisfied: pillow>=8 in /home/kal/.venv/lib/python3.12/site-packages (from matplotlib) (11.3.0)
Requirement already satisfied: pyparsing>=2.3.1 in /home/kal/.venv/lib/python3.12/site-packages (from matplotlib) (3.3.2)
Requirement already satisfied: python-dateutil>=2.7 in /home/kal/.venv/lib/python3.12/site-packages (from matplotlib) (2.9.0.post0)
Requirement already satisfied: narwhals>=1.15.1 in /home/kal/.venv/lib/python3.12/site-packages (from plotly) (2.19.0)
Requirement already satisfied: pytz>=2020.1 in /home/kal/.venv/lib/python3.12/site-packages (from pandas) (2026.1.post1)
Requirement already satisfied: tzdata>=2022.7 in /home/kal/.venv/lib/python3.12/site-packages (from pandas) (2026.1)
Requirement already satisfied: mizani~=0.14.0 in /home/kal/.venv/lib/python3.12/site-packages (from plotnine) (0.14.4)
Requirement already satisfied: scipy>=1.8.0 in /home/kal/.venv/lib/python3.12/site-packages (from plotnine) (1.14.1)
Requirement already satisfied: statsmodels>=0.14.5 in /home/kal/.venv/lib/python3.12/site-packages (from plotnine) (0.14.5)
Requirement already satisfied: Flask<3.2,>=1.0.4 in /home/kal/.venv/lib/python3.12/site-packages (from dash) (3.1.3)
Requirement already satisfied: Werkzeug<3.2 in /home/kal/.venv/lib/python3.12/site-packages (from dash) (3.1.9)
Requirement already satisfied: importlib-metadata in /home/kal/.venv/lib/python3.12/site-packages (from dash) (8.7.1)
Requirement already satisfied: typing_extensions>=4.1.1 in /home/kal/.venv/lib/python3.12/site-packages (from dash) (4.15.0)
Requirement already satisfied: requests in /home/kal/.venv/lib/python3.12/site-packages (from dash) (2.32.5)
Requirement already satisfied: retrying in /home/kal/.venv/lib/python3.12/site-packages (from dash) (1.4.2)
Requirement already satisfied: nest-asyncio in /home/kal/.venv/lib/python3.12/site-packages (from dash) (1.6.0)
Requirement already satisfied: setuptools in /home/kal/.venv/lib/python3.12/site-packages (from dash) (82.0.1)
Requirement already satisfied: janus>=1.0.0 in /home/kal/.venv/lib/python3.12/site-packages (from dash) (2.0.0)
Requirement already satisfied: pydantic>=2.10 in /home/kal/.venv/lib/python3.12/site-packages (from dash) (2.12.5)
Requirement already satisfied: comm in /home/kal/.venv/lib/python3.12/site-packages (from dash) (0.2.3)
Requirement already satisfied: blinker>=1.9.0 in /home/kal/.venv/lib/python3.12/site-packages (from Flask<3.2,>=1.0.4->dash) (1.9.0)
Requirement already satisfied: click>=8.1.3 in /home/kal/.venv/lib/python3.12/site-packages (from Flask<3.2,>=1.0.4->dash) (8.1.8)
Requirement already satisfied: itsdangerous>=2.2.0 in /home/kal/.venv/lib/python3.12/site-packages (from Flask<3.2,>=1.0.4->dash) (2.2.0)
Requirement already satisfied: jinja2>=3.1.2 in /home/kal/.venv/lib/python3.12/site-packages (from Flask<3.2,>=1.0.4->dash) (3.1.6)
Requirement already satisfied: markupsafe>=2.1.1 in /home/kal/.venv/lib/python3.12/site-packages (from Flask<3.2,>=1.0.4->dash) (3.0.3)
Requirement already satisfied: annotated-types>=0.6.0 in /home/kal/.venv/lib/python3.12/site-packages (from pydantic>=2.10->dash) (0.7.0)
Requirement already satisfied: pydantic-core==2.41.5 in /home/kal/.venv/lib/python3.12/site-packages (from pydantic>=2.10->dash) (2.41.5)
Requirement already satisfied: typing-inspection>=0.4.2 in /home/kal/.venv/lib/python3.12/site-packages (from pydantic>=2.10->dash) (0.4.2)
Requirement already satisfied: six>=1.5 in /home/kal/.venv/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib) (1.17.0)
Requirement already satisfied: patsy>=0.5.6 in /home/kal/.venv/lib/python3.12/site-packages (from statsmodels>=0.14.5->plotnine) (1.0.2)
Requirement already satisfied: zipp>=3.20 in /home/kal/.venv/lib/python3.12/site-packages (from importlib-metadata->dash) (3.23.0)
Requirement already satisfied: charset_normalizer<4,>=2 in /home/kal/.venv/lib/python3.12/site-packages (from requests->dash) (3.4.7)
Requirement already satisfied: idna<4,>=2.5 in /home/kal/.venv/lib/python3.12/site-packages (from requests->dash) (3.11)
Requirement already satisfied: urllib3<3,>=1.21.1 in /home/kal/.venv/lib/python3.12/site-packages (from requests->dash) (2.6.3)
Requirement already satisfied: certifi>=2017.4.17 in /home/kal/.venv/lib/python3.12/site-packages (from requests->dash) (2026.2.25)
[notice] A new release of pip is available: 26.2.2 -> 26.3
[notice] To update, run: pip install --upgrade pipBaris Requirement already satisfied menyatakan bahwa pustaka yang diminta sudah terpasang pada lingkungan tempat perintah dijalankan, sehingga pip tidak mengunduh apa pun. Lingkungan pada keluaran tersebut adalah virtual environment, yaitu salinan lingkungan Python yang terpisah dari instalasi sistem, dan lokasinya tercantum pada setiap baris. Lokasi semacam itu berbeda antarkomputer, sehingga yang diperiksa adalah versi pustakanya, bukan persamaan jalurnya. Pada komputer yang belum memasang pustaka ini, pip menampilkan kemajuan unduhan sebagai ganti baris tersebut. Dua baris [notice] pada akhir keluaran berasal dari pip sendiri dan tidak berkaitan dengan pemasangan pustaka.
Pemeriksaan versi#
Versi pustaka menentukan bentuk keluaran yang tampil sepanjang jalur, sehingga versi lingkungan sendiri perlu diketahui sejak awal. Berkas berikut mencetak versi Python beserta versi keenam pustaka tersebut.
"""Pemeriksaan versi pustaka yang dipakai sepanjang jalur."""
import sys
PUSTAKA = ["matplotlib", "pandas", "seaborn", "plotly", "dash", "plotnine"]
print("Python", sys.version.split()[0])
for nama in PUSTAKA:
modul = __import__(nama)
print(nama, modul.__version__)Python 3.12.16
matplotlib 3.9.2
pandas 2.2.3
seaborn 0.13.2
plotly 6.5.2
dash 4.5.0
plotnine 0.15.2Berkas memanggil atribut __version__ pada setiap modul, yakni atribut versi yang disediakan hampir semua pustaka Python. Angka pada keluaran ini menjadi acuan jalur, yaitu matplotlib 3.9, plotly 6.5, Dash 4.5, dan pandas 2.2. Apabila versi pada lingkungan sendiri berbeda, kebanyakan contoh tetap berjalan dengan cara yang sama, tetapi keluaran yang tidak cocok pada topik lain sebaiknya ditelusuri dari perbedaan versi terlebih dahulu.
Dataset yang digunakan sepanjang jalur#
Semua contoh di jalur ini bekerja pada satu dataset yang sama, yaitu berkas nilai_ujian.csv. Data ini fiktif dan dibuat sebagai bahan latihan, dengan latar cerita berupa rekaman nilai ujian di satu sekolah. Isinya 24 baris yang masing-masing menyimpan satu siswa, terbagi ke dua kelas, 7A dan 7B. Nama siswanya bersifat netral dan khas Indonesia, seperti Ali, Budi, dan Citra, karena data ini murni bahan latihan. Ada enam kolom: siswa berisi nama fiktif, kelas menandai kelasnya, nilai_matematika, nilai_fisika, dan nilai_literasi menyimpan nilai ujian dalam rentang 61 sampai 95, sedangkan hadir_persen menyimpan persentase kehadiran dalam rentang 82 sampai 99.
Berkas berikut adalah salinan dataset tersebut, dan salinan yang sama berada di samping topik ini. Simpan salinannya ke folder kerja sebelum mengikuti contoh sepanjang jalur.
siswa,kelas,nilai_matematika,nilai_fisika,nilai_literasi,hadir_persen
Ali,7A,78,74,71,92
Budi,7A,85,83,80,95
Citra,7A,92,90,88,98
Dewi,7A,68,65,79,88
Eka,7A,74,72,70,91
Fajar,7A,88,86,84,96
Gita,7A,81,79,77,94
Hana,7A,90,88,91,97
Indra,7A,66,64,73,85
Joko,7A,77,75,72,93
Kartika,7A,95,93,89,99
Laila,7A,83,81,78,95
Nanda,7B,72,70,68,90
Oki,7B,80,78,74,93
Putri,7B,87,85,82,96
Rahmat,7B,63,61,66,82
Sari,7B,76,74,71,91
Tono,7B,84,82,79,95
Umar,7B,70,68,72,89
Vina,7B,91,89,86,98
Wulan,7B,79,77,75,94
Yusuf,7B,65,63,70,84
Zahra,7B,89,87,85,97
Bayu,7B,75,73,69,92Sebagai satu-satunya dataset kanonik, berkas ini menjadi bahan yang identik untuk grafik statis, grafik interaktif, dan gramatika berlapis, sehingga perbandingan antaralat dilakukan pada data yang sama. Angka pada dataset sengaja dibuat mudah dihitung ulang. Skrip berikut membaca CSV tersebut dengan pandas dan menghitung rata-rata setiap kolom per kelas, sehingga angka yang dirujuk sepanjang jalur selalu dapat diverifikasi.
"""Menghitung ulang rata-rata per kelas dari dataset nilai_ujian.csv."""
import pandas as pd
data = pd.read_csv("nilai_ujian.csv")
kolom = ["nilai_matematika", "nilai_fisika", "nilai_literasi", "hadir_persen"]
rata = data.groupby("kelas")[kolom].mean().round(2)
print(rata) nilai_matematika nilai_fisika nilai_literasi hadir_persen
kelas
7A 81.42 79.17 79.33 93.58
7B 77.58 75.58 74.75 91.75Keluaran menegaskan angka yang menjadi acuan jalur. Rata-rata kelas 7A berada pada matematika 81.42, fisika 79.17, literasi 79.33, dan kehadiran 93.58, sedangkan 7B berada pada 77.58, 75.58, 74.75, dan 91.75. Selisih kelasnya sekitar tiga sampai empat poin, cukup terlihat pada grafik tetapi tidak ekstrem, sehingga cocok untuk melatih pembacaan pola tanpa kejutan. Topik lain yang menyebut angka ini mengacu pada pengukuran yang sama, dan skrip ini menjadi cara memeriksanya.
Kebutuhan browser untuk modul D3#
Satu bagian jalur bekerja di sisi web dan membutuhkan browser, yaitu modul D3. Browser modern seperti Chrome, Firefox, atau Edge sudah memadai, dan kebanyakan komputer sudah memilikinya sehingga tidak ada langkah pemasangan tambahan. Demo interaktif di jalur ini disematkan langsung pada halaman dan berjalan di dalam browser, karena demo pada situs ini bersifat mandiri, tanpa CDN eksternal maupun langkah build. Potongan JavaScript dapat diuji dengan cepat melalui Node.js di terminal, dan Node.js versi 18 atau lebih baru sudah memadai untuk potongan-potongan itu.
Ringkasan#
- Enam pustaka Python menopang jalur ini, yaitu matplotlib, pandas, seaborn, plotly, plotnine, dan Dash, semuanya dipasang melalui satu perintah pip.
pip installyang dijalankan ulang hanya memeriksa pustaka yang sudah terpasang, sehingga perintahnya aman diulang.- Dataset kanonik bernama
nilai_ujian.csvberisi 24 siswa dari dua kelas beserta nilai matematika, fisika, literasi, dan kehadiran, dengan angka yang mudah dihitung ulang. - Modul D3 hanya membutuhkan browser modern, dan Node.js versi 18 atau lebih baru untuk menguji potongan JavaScript.
Referensi#
- Getting started — matplotlib — Panduan resmi pemasangan matplotlib melalui pip beserta lingkungan virtual yang disarankan.
- Getting Started with Plotly — Plotly — Panduan resmi pemasangan plotly melalui pip.
- Getting started — D3 — Panduan resmi D3 yang menjelaskan cara memuat pustakanya di browser.