DataLens

Grafik pertamamu: line dan scatter dengan px

Gambar grafik garis untuk tren dan scatter plot untuk hubungan, masing-masing dalam satu baris Plotly Express.

Level: Dasar · 6 menit baca

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Idenya

Tabel angka membuat orang menyipitkan mata. Grafik membuat mereka mengangguk. Plotly Express (di-import sebagai px) adalah cara tercepat mengubah DataFrame pandas menjadi grafik interaktif: satu pemanggilan fungsi, dan kamu mendapat grafik yang bisa di-hover, di-zoom dan diunduh sebagai gambar.

Setiap fungsi Plotly Express mengikuti pola yang sama, itulah sebabnya ia sangat mudah dipelajari:

fig = px.chart_type(data_frame, x="column", y="column", ...)
fig.show()

Kamu memberinya DataFrame, memberi tahu kolom mana untuk sumbu mana, dan ia mengembalikan objek figure. fig.show() menggambarnya. Di situs ini, grafik muncul di tab Output.

Modul ini membahas dua grafik yang paling sering akan kamu pakai: grafik garis untuk perubahan dari waktu ke waktu, dan scatter plot untuk hubungan antara dua angka.

Grafik garis: bagaimana sesuatu berubah dari waktu ke waktu

Ini revenue Toko Kita di paruh pertama 2024:

import pandas as pd
import plotly.express as px

monthly = pd.DataFrame({
    "month": ["2024-01", "2024-02", "2024-03", "2024-04", "2024-05", "2024-06"],
    "revenue": [1693000, 1957000, 1517000, 4227000, 2552000, 1680000],
    "orders": [6, 5, 3, 8, 5, 3],
})

fig = px.line(monthly, x="month", y="revenue", title="Monthly revenue")
fig.show()

Tekan Try it. Kamu akan melihat garis dengan lonjakan jelas di bulan April. Arahkan kursor ke sebuah titik dan Plotly menampilkan bulan dan revenue persisnya, tanpa kode tambahan.

Menambahkan marker

Garis polos bisa menyembunyikan berapa banyak titik datanya. markers=True menambahkan titik di setiap data:

fig = px.line(monthly, x="month", y="orders", title="Orders per month", markers=True)
fig.show()

Dengan data hanya enam bulan, marker membuat jelas bahwa setiap titik adalah satu bulan, sehingga pembaca tidak membayangkan ada data di antara titik-titiknya.

Ide utama

Pakai grafik garis saat sumbu x punya urutan alami (hari, bulan, tahun) dan kamu peduli pada tren-nya. Menghubungkan titik dengan garis berarti "titik-titik ini berurutan". Jangan pakai garis untuk kategori seperti nama produk, karena tidak ada apa pun "di antara" mug dan kettle.

Scatter plot: adakah hubungannya?

Scatter plot menaruh satu titik per baris, dengan satu angka di setiap sumbu. Ia menjawab pertanyaan seperti "apakah produk yang lebih murah terjual lebih banyak unit?"

products = pd.DataFrame({
    "product": ["Arabica Gayo 250g", "USB-C Hub", "Notebook A5 Dotted", "Pour-over Kettle",
                "Gel Pen Set", "Desk Lamp LED", "Ceramic Mug", "Toraja Kalosi 250g"],
    "price": [95000, 289000, 45000, 320000, 38000, 245000, 55000, 110000],
    "units_sold": [12, 14, 11, 10, 3, 10, 1, 10],
})

fig = px.scatter(products, x="price", y="units_sold", hover_name="product",
                 title="Price vs units sold")
fig.show()

Di data ini tidak ada pola yang jelas: produk mahal seperti USB-C Hub terjual sama baiknya dengan notebook yang murah. Itu juga sebuah temuan. Scatter plot sering menjadi cara tercepat untuk menemukan bahwa hubungan yang kamu asumsikan ternyata tidak ada.

Objek figure

px.line() dan px.scatter() tidak menggambar apa pun dengan sendirinya. Mereka mengembalikan figure, objek Python yang mendeskripsikan grafiknya. Menggambarnya adalah langkah terpisah. Pemisahan itu berguna: kamu bisa membangun figure, memeriksanya, menyesuaikannya dan baru kemudian menampilkannya.

fig = px.line(monthly, x="month", y="revenue")
print(type(fig))
print(fig.data[0].type, fig.data[0].mode)
print(fig.data[0].y.tolist())
<class 'plotly.graph_objs._figure.Figure'>
scatter lines
[1693000, 1957000, 1517000, 4227000, 2552000, 1680000]

Dua hal yang perlu diperhatikan:

Kamu akan bekerja langsung dengan trace di modul Graph Objects. Untuk sekarang, cukup ketahui bahwa figure adalah data yang bisa kamu periksa, dan begitulah situs ini memeriksa grafikmu.

Awas

Typo di nama kolom memunculkan error seperti ValueError: Value of 'x' is not the name of a column in 'data_frame'. Expected one of ['month', 'revenue', 'orders'] but received: Month. Baca bagian akhir pesannya: Plotly mendaftar nama-nama kolom yang sebenarnya untukmu.

Mengapa ini penting untuk kode yang bersih

Pisahkan persiapan data dan penggambaran: bangun DataFrame yang tidy dulu (satu baris per titik, nama kolom yang jelas), lalu buat grafiknya dalam satu pemanggilan px yang mudah dibaca. Saat grafiknya salah, kamu akan tahu apakah harus memperbaiki data atau grafiknya. Dan beri nama figure sesuai apa yang ditampilkannya, seperti revenue_trend atau price_vs_units, begitu kamu punya lebih dari satu.

Rangkuman

Latihan modul ini

Soal-soal untuk pelajaran ini berjalan di browser-mu dan langsung mengecek jawabanmu.

Berikutnya: Grafik bar dan histogram →