Lewati ke konten utama

Tutorial Plotly Express Python: Ciptakan Visualisasi Menawan

Pelajari cara membuat bagan yang sangat interaktif dan menarik secara visual dengan Python Plotly Express.
Diperbarui 28 Sep 2026  · 10 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Plotly bukan sekadar alat untuk membuat visualisasi yang indah; ini tentang membuka potensi penuh data Anda dan mengungkap wawasan yang mungkin tetap tersembunyi. Plotly adalah jembatan antara bahasa angka dan bahasa cerita, memberdayakan individu dan organisasi untuk mengambil keputusan yang tepat dan menciptakan perubahan yang bermakna.

Itulah bahasa yang digunakan ChatGPT untuk menggambarkan Plotly. Jelas, Plotly adalah salah satu pustaka visualisasi data terbaik yang ada.

Plotly Express

Plotly menghasilkan bagan yang sangat interaktif dan menarik secara visual seperti contoh di bawah ini:

Hari ini, Anda akan mempelajari dasar-dasar membuat visual yang keren dengan Plotly.

Dasar-dasar Plotly Express

Seperti tutorial lainnya, kita mulai dengan memasang pustaka melalui pip (atau conda jika Anda lebih suka).

$ pip install --upgrade plotly
$ conda install -c conda-forge plotly

Plotly menerima pembaruan rutin, jadi pastikan tag --upgrade disertakan jika Anda sudah memasang pustakanya.

Tutorial ini berfokus pada API Express dari Plotly, yang diperkenalkan pada 2019, menawarkan banyak manfaat dibanding cara lama berinteraksi dengan pustaka inti Plotly:

  • Sintaks sederhana (nyaris seperti bahasa Inggris)
  • Ragam visualisasi yang luas (atau alat untuk membuat versi Anda sendiri)
  • Skala sumbu dan warna otomatis
  • Integrasi dengan pandas (Anda dapat menggunakan backend plotting Plotly untuk fungsi Pandas .plot)

Berikut anatomi plot dasar di Plotly Express:

import plotly.express as px

fig = px.plotting_function(
    dataframe,
    x='column-for-xaxis',
    y='column-for-yaxis',
    title='Title For the Plot',
    width=width_in_pixels,
    height=height_in_pixels
)

fig.show()

Berbagai plot berada di bawah nama masing-masing, seperti histogram atau scatter pada modul express, yang dimuat sebagai px. Argumen pertama untuk fungsi plotting apa pun adalah dataframe serta nama kolom yang akan diplot untuk sumbu X dan Y.

Praktik terbaik menyarankan agar Anda memberi plot sebuah title yang informatif sehingga pembaca tahu apa yang ditampilkan.

Setelah fungsi plotting dijalankan, ia mengembalikan objek Figure, dan di atasnya Anda memanggil metode show untuk menampilkan plot di notebook Anda.

Untuk mulai membuat plot, kita memerlukan dataset. Untuk tutorial ini, kami menggunakan dataset Diamonds. Dataset ini berisi kombinasi fitur numerik dan kategorikal yang menarik—sempurna untuk tujuan artikel ini.

import pandas as pd

diamonds = pd.read_csv("data/diamonds.csv")

diamonds.head()

Set Data

Dataset ini berisi lebih dari 53 ribu berlian dengan 10 karakteristik fisik. Anda dapat menelusuri statistik dasar data di bawah ini.

diamonds.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 53940 entries, 0 to 53939
Data columns (total 10 columns):
#   Column   Non-Null Count  Dtype 
---  ------   --------------  ----- 
0   carat    53940 non-null  float64
1   cut      53940 non-null  object
2   color    53940 non-null  object
3   clarity  53940 non-null  object
4   depth    53940 non-null  float64
5   table    53940 non-null  float64
6   price    53940 non-null  int64 
7   x        53940 non-null  float64
8   y        53940 non-null  float64
9   z        53940 non-null  float64
dtypes: float64(6), int64(1), object(3)
memory usage: 4.1+ MB
diamonds.describe()

Salah satu hal pertama saat melakukan Analisis Data Eksploratif (EDA) adalah menelusuri distribusi individual.

Plotly menawarkan banyak bagan untuk tugas ini: histogram, boxplot, violin plot, bar chart, dan lain-lain. Mari kita lihat beberapa di antaranya.

Histogram di Plotly Express

Histogram mungkin adalah visual pertama yang dipelajari banyak orang.

Histogram mengurutkan nilai sebuah distribusi dan menempatkannya ke dalam bin. Lalu, batang digunakan untuk merepresentasikan berapa banyak nilai yang masuk ke tiap bin:

import plotly.express as px
​
fig = px.histogram(
  diamonds,
  x="price",
  title="Histogram of diamond prices",
  width=600,
  height=400,
)
​
fig.show()

Histogram Plotly Express

Jika Anda mengarahkan kursor ke batang mana pun, Anda dapat melihat rentang bin yang sesuai. Plotly secara otomatis menentukan jumlah bin, tetapi jika Anda ingin mengaturnya sendiri, Anda dapat menggunakan parameter nbins.

Namun, sulit menemukan jumlah bin yang tepat untuk setiap distribusi. Karena itu, Anda dapat menggunakan praktik umum dengan menyamakan jumlah bin dengan akar kuadrat dari panjang distribusi:

# Temukan jumlah bin yang tepat
nbins = int(len(diamonds) ** (1 / 2))
​
fig = px.histogram(
  diamonds,
  x="price",
  title="Histogram of diamond prices",
  nbins=nbins,
  width=600,
  height=400,
)
​
fig.show()

Bar chart di Plotly Express

Histogram menganalisis fitur kuantitatif. Untuk menganalisis data kategorikal, kita beralih ke bar chart. Misalnya, dengan memasukkan kolom kategorikal cut ke fungsi histogram, kita mendapatkan jenis bar chart yang disebut countplot. Benar, sesuai dugaan Anda—countplot menghitung jumlah observasi di setiap kategori.

fig = px.histogram(diamonds, x="cut")
​
fig.show()

Bar Chart Plotly Express

Tapi tunggu, kita belum memberi label apa pun pada plot! Mari perbaiki dengan fungsi update_layout, yang dapat memodifikasi banyak aspek figure setelah dibuat.

fig.update_layout(
  title="The number of diamonds in each diamond cut category",
  xaxis_title="",
  yaxis_title="Count",
)

Label Bar Chart Plotly Express

Anda sudah tahu apa yang dilakukan title. xaxis_title dan yaxis_title mengganti label kedua sumbu yang dihasilkan Plotly (yang pada dasarnya adalah nama kolom).

Sekarang, mari lihat harga rata-rata untuk setiap kategori potongan berlian. Pertama, kita gunakan groupby dari pandas:

mean_prices = (
    diamonds.groupby("cut")["price"].mean().reset_index()
)

mean_prices

Groupby

Menggabungkan fungsi reset_index di akhir operasi groupby mengubah keluaran menjadi DataFrame, dan Plotly sangat cocok dengan DataFrame. Jadi, mari kita teruskan ke fungsi bar:

fig = px.bar(mean_prices, x="cut", y="price")
​
fig.update_layout(
  title="Average diamond prices for each cut category",
  xaxis_title="",
  yaxis_title="Mean price ($)",
)
​
fig.show()

Harga Rata-rata

bar menerima satu fitur kategorikal dan satu numerik, lalu membuat satu batang untuk setiap baris pada DataFrame yang diberikan. Hasilnya adalah perbandingan harga untuk tiap jenis berlian yang mudah dicerna.

Box plot di Plotly Express

Plot umum lainnya untuk menganalisis distribusi adalah boxplot, yang dibuat dengan box di Plotly Express:

fig = px.box(diamonds, x="clarity", y="carat")
​
fig.update_layout(
  title="Distribution of diamond carats for each clarity category",
  xaxis_title="Clarity",
  yaxis_title="Carat",
)
​
fig.show()

Box Plot Plotly Express

Alih-alih membuat batang yang hanya menampilkan rata-rata karat berlian, boxplot menampilkan beberapa statistik:

Statistik Box Plot

Anda dapat melihat:

  • Minimum/maksimum
  • Median
  • Persentil ke-25
  • Persentil ke-75
  • dan pencilan (outlier)

untuk setiap kategori kejernihan berlian.

Violin plot di Plotly Express

Bagan lain yang menyenangkan untuk mengeksplorasi distribusi adalah violin plot. Violin plot pada dasarnya adalah box plot dengan beberapa sentuhan tambahan:

fig = px.violin(diamonds, x="cut", y="price")
​
fig.show()

Violin Plot Plotly Express

Alih-alih menampilkan kotak, violin plot menunjukkan kurva halus yang menyatakan kepadatan suatu fitur. Untuk menumpuk box plot di dalamnya, Anda dapat menyetel atribut box ke True:

fig = px.violin(diamonds, x="cut", y="price", box=True)
​
fig.show()

Violin Box Plot Plotly Express

Tidak seperti box plot yang hanya menampilkan statistik ringkas, violin plot juga menampilkan bentuk distribusi.

Memvisualisasikan hubungan antar fitur di Plotly Express

Anda mulai melihat pola dan wawasan baru saat memplot fitur yang saling berkaitan. Misalnya, jika kita berasumsi bahwa karat (berat) berlian adalah faktor utama penentu harganya, mari telusuri hubungan tersebut.

Scatterplot di Plotly Express

Kita dapat menggunakan scatterplot (px.scatter) yang memplot semua berlian dalam dataset sebagai titik. Posisi titik ditentukan oleh nilai harga dan karatnya masing-masing:

fig = px.scatter(diamonds, x="price", y="carat")
​
fig.update_layout(
  title="Price vs. Carat",
  xaxis_title="Price ($)",
  yaxis_title="Carat",
)
​
fig.show()

Scatter Plot Plotly Express

Kita menghadapi kasus overplotting, yang terjadi ketika terlalu banyak data ditampilkan dalam satu plot. Alih-alih menunjukkan pola dan tren sebenarnya, overplotting justru menutupinya.

Kita bisa mengatasinya dengan memplot hanya ~10% dari dataset, yang cukup untuk mengungkap pola yang ada:

fig = px.scatter(
  diamonds.sample(5000), x="price", y="carat"
)
​
fig.update_layout(
  title="Price vs. Carat",
  xaxis_title="Price ($)",
  yaxis_title="Carat",
)
​
fig.show()

Scatter Plot 10 Persen

Pada pemanggilan scatter, kita hanya meneruskan 5000 baris (.sample(5000)), yang menunjukkan tren naik ringan pada hubungan harga–karat.

Heatmap di Plotly Express

Heatmap sangat bagus untuk memvisualisasikan dataset yang kompleks, seperti matriks besar di mana sulit melihat pola dari sekumpulan angka di sel.

Heatmap menetapkan warna berdasarkan besaran setiap sel dalam matriks. Salah satu skenario yang berguna adalah melihat matriks korelasi sebuah dataset.

Korelasi mengukur hubungan linear antar fitur numerik. Jadi, setiap sel pada matriks korelasi merepresentasikan korelasi antara sepasang fitur.

Anda dapat menghitung matriks korelasi dataset apa pun menggunakan metode corr dari pandas, yang mengembalikan DataFrame. Jika Anda meneruskannya ke fungsi imshow dari Express, Anda akan mendapatkan heatmap:

import plotly.express as px
​
# Create heatmap using Plotly Express
fig = px.imshow(
  diamonds.corr(),
  color_continuous_scale="Inferno_r",
)
​
# Show plot
fig.show()

Heatmap Plotly Express

Nilai korelasi berkisar dari -1 hingga 1. Nilai yang mendekati tepi rentang menunjukkan hubungan linear positif atau negatif yang kuat antar fitur.

Kita memilih colormap Inferno terbalik untuk parameter color_continuous_scale. Anda dapat memilih colormap lain dari halaman skala warna pada dokumentasi Plotly.

Kustomisasi plot di Plotly Express

Salah satu keunggulan terbesar API Plotly Express adalah kemudahan kustomisasi plot.

Fungsi update_layout memiliki banyak parameter yang dapat Anda gunakan untuk memodifikasi hampir semua aspek bagan.

Bergantung pada tempat plot Anda akan ditampilkan, menjadi tugas Anda untuk membuatnya layak tampil di hadapan audiens, lokasi, atau media apa pun.

Salah satu hal pertama yang dipilih adalah tema plot. Tema di Plotly adalah konfigurasi bagan default yang mengendalikan hampir semua komponennya.

Anda dapat mengubahnya menggunakan parameter template pada fungsi plotting apa pun:

sample = diamonds.sample(3000)
​
fig = px.scatter(
  sample, x="price", y="carat", template="ggplot2"
)
​
fig.show()

Tema Plot Plotly Express

Beberapa yang populer adalah ggplot2, seaborn, plotly_dark, dan presentation. Anda dapat melihat daftar lengkapnya dengan memanggil plotly.io.templates.

Warna

Scatterplot kita sejauh ini bersifat dua dimensi. Namun kita bisa menambahkan informasi ekstra melalui warna.

Misalnya, kita dapat mewarnai setiap titik pada plot berdasarkan kategori berlian. Untuk melakukannya, Anda hanya perlu meneruskan cut ke parameter color:

sample = diamonds.sample(3000)
​
fig = px.scatter(sample, x="price", y="carat", color="cut")
​
fig.show()

Warna Plotly Express

Parameter cut juga menampilkan legenda pada plot, yang menunjukkan warna tiap kategori.

Ukuran marker

Pendekatan lain adalah menampilkan fitur numerik melalui ukuran titik.

Dengan menyetel parameter size ke carat, kita memperoleh titik dengan ukuran berbeda berdasarkan karat berlian:

fig = px.scatter(sample, x="price", y="x", size="carat")
​
fig.show()

Ukuran Marker Plotly Express

Bagaimana jika kita gunakan warna dan ukuran sekaligus? Tentu bisa! 

fig = px.scatter(
  sample, x="price", y="x", size="carat", color="cut"
)
​
fig.show()

Ukuran dan Warna

Namun plot ini kurang informatif karena memuat terlalu banyak informasi untuk diproses oleh mata. Praktik yang baik adalah tidak memadatkan lebih dari tiga fitur ke dalam satu plot.

Penutup

Selamat sudah sampai di akhir! Anda telah mempelajari cukup banyak dalam tutorial ini untuk melanjutkan belajar mandiri Plotly dari sumber kami yang lain:

Anda juga dapat mempelajari API Graph Objects milik Plotly, untuk opsi kustomisasi lebih lanjut, kontrol penuh atas interaktivitas dan animasi, serta dukungan untuk tipe visualisasi tingkat lanjut.

Topik
Python
Visualisasi Data

Kursus Python

Kursus

Membangun Dasbor dengan Dash dan Plotly

4 jam
17K
Pelajari cara membangun dashboard interaktif dan kaya insight dengan Dash dan Plotly.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

Lihat SelengkapnyaLihat Selengkapnya