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 #

python
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:

text
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.png

Perhatikan 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:

  1. Baris 16 (df = penjualan.reset_index()): index nama bulan diangkat menjadi kolom bulan, dan DataFrame baru mendapat index angka 0 sampai 5.
  2. Baris 20 (df.plot.line(x="bulan", y="Pulpen", ...)): pandas mengambil kolom bulan untuk sumbu x dan kolom Pulpen untuk sumbu y. Kedua nama kolom ini juga otomatis menjadi label sumbu.
  3. Baris 22 (len(ax.lines)): atribut ax.lines berisi objek garis Matplotlib di dalam Axes; jumlahnya mengikuti banyaknya kolom yang digambar.
  4. Baris 25 (df.plot.line(x="bulan", y=["Pulpen", "Kertas HVS"], ...)): parameter figsize=(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.