Line plot adalah jenis grafik yang paling sering dipakai untuk data berurutan seperti penjualan per bulan atau suhu per jam: satu garis menghubungkan nilai satu per satu sehingga naik-turunnya terlihat langsung. Pada pandas, method .plot.line() menggambar garis tersebut dari data DataFrame. Chapter ini membahas dua bentuk pemanggilannya — berbasis index dan berbasis parameter x dan y — beserta cara menggabungkan beberapa kolom dalam satu gambar.
Menyiapkan Kolom Bulan dengan reset_index #
Dataset penjualan Toko Alat Tulis Sinar pada chapter sebelumnya memakai nama bulan sebagai index. Untuk menggambar garis dengan sumbu x tertentu, kita sering ingin bulan menjadi kolom biasa agar bisa dirujuk lewat parameter x. Method reset_index() mengangkat index menjadi kolom; pada pandas 3.0, kolom teks hasilnya bertipe str seperti terlihat pada output skrip di bawah.
Menggambar Garis Satu Kolom #
import matplotlib
matplotlib.use("Agg")
import pandas as pd
from pathlib import Path
bulan = ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun"]
penjualan = pd.DataFrame(
{
"Buku Tulis": [320, 340, 310, 380, 400, 420],
"Pulpen": [180, 210, 230, 220, 250, 270],
"Kertas HVS": [260, 250, 290, 300, 280, 310],
},
index=pd.Index(bulan, name="bulan"),
)
df = penjualan.reset_index()
print("dtype kolom bulan:", df["bulan"].dtype)
print(df)
ax = df.plot.line(x="bulan", y="Pulpen", title="Penjualan Pulpen S1 2026")
print("\nTipe objek :", type(ax).__name__)
print("Jumlah garis :", len(ax.lines))
print("Judul axes :", repr(ax.get_title()))
ax2 = df.plot.line(x="bulan", y=["Pulpen", "Kertas HVS"], figsize=(8, 4))
print("\nDua kolom sekaligus:")
print("Jumlah garis :", len(ax2.lines))
print("Label legend :", [t.get_text() for t in ax2.get_legend().get_texts()])
ax2.get_figure().savefig("line_penjualan.png", dpi=100)
print("\nPlot tersimpan sebagai line_penjualan.png")
Path("line_penjualan.png").unlink()Output yang Dihasilkan:
dtype kolom bulan: str
bulan Buku Tulis Pulpen Kertas HVS
0 Jan 320 180 260
1 Feb 340 210 250
2 Mar 310 230 290
3 Apr 380 220 300
4 Mei 400 250 280
5 Jun 420 270 310
Tipe objek : Axes
Jumlah garis : 1
Judul axes : 'Penjualan Pulpen S1 2026'
Dua kolom sekaligus:
Jumlah garis : 2
Label legend : ['Pulpen', 'Kertas HVS']
Plot tersimpan sebagai line_penjualan.pngPerhatikan hasil yang dicetak. Parameter x="bulan" memakai kolom bulan sebagai sumbu x, dan parameter y="Pulpen" memilih satu kolom sebagai sumbu y, sehingga len(ax.lines) bernilai 1. Parameter title langsung memberi judul pada Axes, terbaca lewat ax.get_title(). Pada pemanggilan kedua, y menerima list berisi dua kolom sehingga len(ax.lines) bernilai 2 dan legend berisi kedua nama kolom tersebut.
Mari kita telaah baris-baris kuncinya:
- Baris 16 (
df = penjualan.reset_index()): index nama bulan diangkat menjadi kolombulan, dan DataFrame baru mendapat index angka 0 sampai 5. - Baris 20 (
df.plot.line(x="bulan", y="Pulpen", ...)): pandas mengambil kolombulanuntuk sumbu x dan kolomPulpenuntuk sumbu y. Kedua nama kolom ini juga otomatis menjadi label sumbu. - Baris 22 (
len(ax.lines)): atributax.linesberisi objek garis Matplotlib di dalamAxes; jumlahnya mengikuti banyaknya kolom yang digambar. - Baris 25 (
df.plot.line(x="bulan", y=["Pulpen", "Kertas HVS"], ...)): parameterfigsize=(8, 4)mengatur ukuran gambar menjadi 8 inci kali 4 inci, lebih lebar daripada nilai bawaan 6.4 kali 4.8.
Ada dua jalur menggambar line plot pada pandas, dan keduanya patut Anda kuasai. Tanpa parameter, penjualan.plot.line() memakai index sebagai sumbu x dan menggambar seluruh kolom numerik sekaligus — cara tercepat untuk pandangan awal. Dengan parameter, df.plot.line(x=..., y=...) memilih kolom secara eksplisit — cara yang lebih panjang tetapi lebih jelas, sekaligus satu-satunya pilihan ketika sumbu x yang diinginkan adalah kolom biasa, bukan index. Pada dataset kita bulan memang sengaja disiapkan sebagai kolom lewat reset_index(), sehingga jalur kedua yang terpakai pada skrip di atas.
Pemilihan x dan y seperti ini terasa mirip seleksi kolom yang sudah kita kuasai pada section indexing. Perbedaannya, hasilnya bukan DataFrame baru, melainkan gambar yang siap dibaca. Data penjualan per bulan memang paling alami digambar sebagai garis, tetapi untuk membandingkan nilai antarkategori — misalnya total penjualan tiga produk — bar plot sering lebih jelas, dan itu topik chapter berikutnya.
Referensi resmi yang relevan untuk chapter ini adalah pandas.DataFrame.plot.line
yang merinci parameter x, y, dan figsize, serta user guide visualization
yang menunjukkan variasi line plot lainnya.