Plot garis adalah visualisasi data relasional yang menunjukkan bagaimana satu variabel kontinu berubah ketika variabel kontinu lainnya berubah. Ini adalah salah satu grafik paling umum yang banyak digunakan di bidang keuangan, penjualan, pemasaran, kesehatan, sains alam, dan lainnya.
Dalam tutorial ini, kita akan membahas cara menggunakan Seaborn, pustaka visualisasi data Python yang populer, untuk membuat dan menyesuaikan plot garis di Python.
Mengenal Dataset
Agar ada bahan untuk berlatih plot garis seaborn, pertama-tama kita akan mengunduh dataset Kaggle bernama Daily Exchange Rates per Euro 1999-2024. Lalu, kita akan mengimpor semua paket yang diperlukan serta membaca dan membersihkan dataframe. Tanpa membahas detail proses pembersihan, kode di bawah menunjukkan langkah-langkah yang dilakukan:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
daily_exchange_rate_df = pd.read_csv('euro-daily-hist_1999_2022.csv')
daily_exchange_rate_df = daily_exchange_rate_df.iloc[:, [0, 1, 4, -2]]
daily_exchange_rate_df.columns = ['Date', 'Australian dollar', 'Canadian dollar', 'US dollar']
daily_exchange_rate_df = pd.melt(daily_exchange_rate_df, id_vars='Date', value_vars=['Australian dollar', 'Canadian dollar', 'US dollar'], value_name='Euro rate', var_name='Currency')
daily_exchange_rate_df['Date'] = pd.to_datetime(daily_exchange_rate_df['Date'])
daily_exchange_rate_df = daily_exchange_rate_df[daily_exchange_rate_df['Date']>='2022-12-01'].reset_index(drop=True)
daily_exchange_rate_df['Euro rate'] = pd.to_numeric(daily_exchange_rate_df['Euro rate'])
print(f'Currencies: {daily_exchange_rate_df.Currency.unique()}\n')
print(df.head())
print(f'\n{daily_exchange_rate_df.Date.dt.date.min()}/{ daily_exchange_rate_df.Date.dt.date.max()}')
Keluaran:
Currencies: ['Australian dollar' 'Canadian dollar' 'US dollar']
Date Currency Euro rate
0 2023-01-27 Australian dollar 1.5289
1 2023-01-26 Australian dollar 1.5308
2 2023-01-25 Australian dollar 1.5360
3 2023-01-24 Australian dollar 1.5470
4 2023-01-23 Australian dollar 1.5529
2022-12-01/2023-01-27
Dataframe yang dihasilkan memuat kurs harian (hari kerja) Euro terhadap dolar Australia, Kanada, dan AS untuk periode dari 01.12.2022 hingga 27.01.2023 termasuk.
Sekarang, kita siap membahas pembuatan dan penyesuaian plot garis seaborn di Python.
Dasar-dasar Plot Garis Seaborn
Untuk membuat plot garis di Seaborn, kita bisa menggunakan salah satu dari dua fungsi: lineplot() atau relplot(). Secara umum, keduanya memiliki banyak fungsi yang sama dengan nama parameter yang identik. Perbedaan utamanya adalah relplot() memungkinkan kita membuat plot garis dengan beberapa garis pada facet yang berbeda. Sementara itu, lineplot() memungkinkan bekerja dengan interval kepercayaan dan agregasi data.
Dalam tutorial ini, kita akan lebih banyak menggunakan fungsi lineplot().
Kursus Introduction to Data Visualization with Seaborn akan membantu Anda mempelajari dan berlatih fungsi dan metode utama pustaka seaborn. Anda juga dapat melihat tutorial Seaborn untuk pemula kami untuk lebih mengenal pustaka Python yang populer ini.
Membuat satu plot garis seaborn
Kita dapat membuat plot garis yang menunjukkan hubungan antara dua variabel kontinu sebagai berikut:
usd = daily_exchange_rate_df[daily_exchange_rate_df['Currency']=='US dollar'].reset_index(drop=True)
sns.lineplot(x='Date', y='Euro rate', data=usd)
Keluaran:

Grafik di atas menunjukkan dinamika kurs EUR-USD. Kita mendefinisikan variabel yang akan diplot pada sumbu x dan y (parameter x dan y) serta dataframe (data) tempat mengambil variabel tersebut.
Untuk perbandingan, untuk membuat plot yang sama menggunakan relplot(), kita akan menulis sebagai berikut:
sns.relplot(x='Date', y='Euro rate', data=usd, kind='line')
Keluaran:

Pada kasus ini, kita menambahkan satu argumen yang spesifik untuk fungsi relplot(): kind='line'. Secara default, fungsi ini membuat plot sebar.
Menyesuaikan satu plot garis seaborn
Kita dapat menyesuaikan grafik di atas dengan banyak cara untuk membuatnya lebih mudah dibaca dan informatif. Misalnya, kita bisa mengatur ukuran figur, menambahkan judul dan label sumbu, menyesuaikan ukuran font, menyesuaikan garis, menambahkan dan menyesuaikan marker, dll. Mari lihat cara menerapkan perbaikan ini di seaborn.
Mengatur ukuran figur
Karena Seaborn dibangun di atas matplotlib, kita bisa menggunakan matplotlib.pyplot untuk mengatur ukuran figur:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd)
Keluaran:

Sebaliknya, dengan relplot(), kita bisa menggunakan parameter height dan aspect (rasio lebar terhadap tinggi) untuk tujuan yang sama:
sns.relplot(x='Date', y='Euro rate', data=usd, kind='line', height=6, aspect=4)
Keluaran:

Menambahkan judul dan label sumbu
Untuk menambahkan judul grafik dan label sumbu, kita dapat menggunakan fungsi set() pada objek plot garis seaborn dengan meneruskan argumen title, xlabel, dan ylabel:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd).set(title='Euro-USD rate', xlabel='Date', ylabel='Rate')
Keluaran:

Menyesuaikan ukuran font
Cara praktis untuk menyesuaikan ukuran font adalah menggunakan fungsi set_theme() dan bereksperimen dengan berbagai nilai parameter font_scale:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd).set(title='Euro-USD rate', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Perhatikan bahwa kita juga menambahkan style='white' untuk menghindari menimpa gaya awal.
Mengubah warna, gaya, dan ukuran garis
Untuk menyesuaikan garis plot, kita bisa meneruskan beberapa parameter opsional yang sama dengan matplotlib.pyplot.plot, seperti color, linestyle, atau linewidth:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd, linestyle='dotted', color='magenta', linewidth=5).set(title='Euro-USD rate', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Menambahkan marker dan menyesuaikan warna, gaya, serta ukurannya
Kita dapat menambahkan marker pada garis dan menyesuaikan tampilannya. Pada kasus ini juga, kita dapat menggunakan beberapa parameter dari matplotlib, seperti marker, markerfacecolor, atau markersize:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=usd, marker='*', markerfacecolor='limegreen', markersize=20).set(title='Euro-USD rate', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Dokumentasi menyediakan daftar lengkap parameter yang dapat digunakan untuk mempercantik plot garis seaborn. Khususnya, kita bisa melihat semua pilihan marker yang tersedia.
Dalam lembar contekan Seaborn kami, Anda akan menemukan cara lain untuk menyesuaikan plot garis di Seaborn.
Plot Garis Seaborn dengan Banyak Garis
Sering kali, kita perlu menelusuri bagaimana beberapa variabel kontinu berubah bergantung pada variabel kontinu lainnya. Untuk tujuan ini, kita dapat membuat plot garis seaborn dengan banyak garis. Fungsi lineplot() dan relplot() juga berlaku untuk kasus seperti ini.
Membuat plot garis seaborn dengan banyak garis
Secara teknis, memungkinkan untuk membuat plot garis seaborn dengan banyak garis hanya dengan membangun objek sumbu terpisah untuk setiap variabel dependen, yaitu setiap garis:
aud = daily_exchange_rate_df[daily_exchange_rate_df['Currency']=='Australian dollar'].reset_index(drop=True)
cad = daily_exchange_rate_df[daily_exchange_rate_df['Currency']=='Canadian dollar'].reset_index(drop=True)
sns.lineplot(x='Date', y='Euro rate', data=usd)
sns.lineplot(x='Date', y='Euro rate', data=aud)
sns.lineplot(x='Date', y='Euro rate', data=cad)
Keluaran:

Di atas, kita mengekstrak dua subset lagi dari dataframe awal daily_exchange_rate_df — untuk dolar Australia dan Kanada — lalu memplot masing-masing kurs euro terhadap waktu. Namun, ada solusi yang lebih efisien: menggunakan parameter hue, style, atau size yang tersedia di lineplot() maupun relplot().
Menggunakan parameter hue
Parameter ini bekerja sebagai berikut: kita menetapkan nama kolom dataframe yang berisi nilai kategorikal, lalu seaborn menghasilkan plot garis untuk setiap kategori dengan memberi warna berbeda untuk tiap garis:
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, hue='Currency')
Keluaran:

Hanya dengan satu baris kode sederhana, kita membuat plot garis seaborn untuk tiga kategori. Perhatikan bahwa kita meneruskan dataframe awal daily_exchange_rate_df alih-alih subsetnya untuk mata uang yang berbeda.
Menggunakan parameter style
Parameter style bekerja sama seperti hue, hanya saja membedakan kategori dengan menggunakan gaya garis yang berbeda (solid, dashed, dotted, dll.), tanpa memengaruhi warna:
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, style='Currency')
Keluaran:

Menggunakan parameter size
Sama seperti hue dan style, parameter size membuat garis terpisah untuk tiap kategori. Ini tidak memengaruhi warna dan gaya garis, tetapi membuat masing-masing memiliki lebar berbeda:
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, size='Currency')
Keluaran:

Menyesuaikan plot garis seaborn dengan banyak garis
Sekarang mari bereksperimen dengan estetika grafik kita. Beberapa teknik di sini identik dengan yang kita terapkan pada satu plot garis Seaborn. Lainnya khusus untuk plot garis dengan banyak garis.
Penyesuaian umum
Kita dapat mengatur ukuran figur, menambahkan judul dan label sumbu, serta mengubah ukuran font pada grafik di atas dengan cara yang sama seperti pada satu plot garis:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, hue='Currency').set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Mengubah warna, gaya, dan ukuran tiap garis
Sebelumnya, kita melihat bahwa saat parameter hue, style, atau size digunakan, seaborn menyediakan set warna/gaya/ukuran default untuk plot garis dengan banyak garis. Jika perlu, kita bisa menimpa default ini dan memilih warna/gaya/ukuran sendiri.
Saat kita menggunakan parameter hue, kita juga dapat meneruskan argumen palette sebagai list atau tuple nama warna matplotlib. Saya sarankan membaca tutorial, Seaborn Color Palette: Quick Guide to Picking Colors, untuk memahami lebih jauh teori warna dan mendapatkan banyak ide bagus agar visual Anda terlihat menarik.
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, hue='Currency', palette=['magenta', 'deepskyblue', 'yellowgreen']).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Kita juga bisa langsung menerapkan palet matplotlib yang sudah ada:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, hue='Currency', palette='spring').set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Pada saat yang sama, saat menggunakan hue, kita tetap bisa menyesuaikan gaya dan lebar garis semua garis dengan meneruskan argumen linestyle dan linewidth:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, hue='Currency', palette=['magenta', 'deepskyblue', 'yellowgreen'], linestyle='dashed', linewidth=5).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Sebaliknya, saat kita membuat plot garis seaborn dengan banyak garis menggunakan parameter style, kita bisa menetapkan list (atau tuple) berisi list (atau tuple) ke parameter bernama dashes:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, style='Currency', dashes=[[4, 4], [6, 1], [3, 9]]).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Pada list berisi list yang ditetapkan ke dashes di atas, item pertama dari setiap sublist merepresentasikan panjang segmen dari garis yang bersesuaian, sedangkan item kedua — panjang jaraknya.
Catatan: untuk merepresentasikan garis solid, kita perlu mengatur panjang jarak ke nol, misalnya: [1, 0].
Untuk menyesuaikan warna dan lebar semua garis pada grafik ini, kita memberikan argumen color dan linewidth, seperti saat menyesuaikan satu plot garis seaborn:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, style='Currency', dashes=[[4, 4], [6, 1], [3, 9]], color='darkviolet', linewidth=4).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Terakhir, saat kita menggunakan parameter size untuk membuat plot banyak garis seaborn, kita dapat mengatur lebar tiap garis melalui parameter sizes. Parameter ini menerima list (atau tuple) bilangan bulat:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, size='Currency', sizes=[2, 10, 5]).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Untuk menyesuaikan warna dan gaya semua garis pada plot ini, kita perlu memberikan argumen linestyle dan color:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, size='Currency', sizes=[2, 10, 5], linestyle='dotted', color='teal').set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Menambahkan marker dan menyesuaikan warna, gaya, serta ukurannya
Kita mungkin ingin menambahkan marker pada plot banyak garis seaborn.
Untuk menambahkan marker dengan warna, gaya, dan ukuran yang sama pada semua garis, kita perlu menggunakan parameter dari matplotlib, seperti marker, markerfacecolor, markersize, dll., seperti yang kita lakukan pada satu plot garis:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, hue='Currency', marker='o', markerfacecolor='orangered', markersize=10).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Namun berbeda halnya ketika kita menginginkan marker yang berbeda untuk tiap garis. Dalam hal ini, kita perlu menggunakan parameter markers yang, menurut fungsionalitas seaborn, hanya bekerja ketika parameter style ditentukan:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, style='Currency', markers=['o', 'X', '*'], markerfacecolor='brown', markersize=10).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Pada plot di atas, kita dapat membuat semua garis menjadi solid dengan memberikan argumen dashes dan menetapkan pola gaya [1, 0] ke setiap garis:
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Date', y='Euro rate', data=daily_exchange_rate_df, style='Currency', markers=['o', 'X', '*'], dashes=[[1, 0], [1, 0], [1, 0]], markerfacecolor='brown', markersize=10).set(title='Euro rates for different currencies', xlabel='Date', ylabel='Rate')
sns.set_theme(style='white', font_scale=3)
Keluaran:

Kesimpulan
Ringkasnya, dalam tutorial ini, kita mempelajari berbagai cara untuk membuat dan menyesuaikan plot garis Seaborn baik dengan satu maupun banyak garis.
Ke depan, dengan seaborn, kita dapat melakukan lebih banyak lagi untuk menyesuaikan plot garis. Misalnya, kita dapat:
- Mengelompokkan garis berdasarkan lebih dari satu variabel kategorikal
- Menyesuaikan legenda
- Membuat plot garis dengan banyak garis pada facet yang berbeda
- Menampilkan dan menyesuaikan interval kepercayaan
- Menyesuaikan tick sumbu waktu dan labelnya untuk plot garis deret waktu
Untuk menggali lebih dalam apa yang dapat dilakukan dan bagaimana caranya dengan seaborn, pertimbangkan untuk mengikuti kursus kami Intermediate Data Visualization with Seaborn.
FAQ Plot Garis Seaborn
Apa itu plot garis di Seaborn?
Plot garis adalah jenis plot di Seaborn yang menunjukkan hubungan antara dua variabel dengan menghubungkan titik data menggunakan garis lurus.
Data seperti apa yang paling cocok untuk plot garis di Seaborn?
Plot garis paling cocok untuk data yang memiliki hubungan jelas antara dua variabel, dan ketika variabelnya bersifat kontinu atau ordinal.
Bisakah saya memplot beberapa garis pada plot yang sama di Seaborn?
Ya, Anda dapat memplot beberapa garis pada plot yang sama di Seaborn dengan menggunakan parameter hue untuk menentukan variabel kategorikal sebagai pengelompokan data.
Apa perbedaan antara plot garis dan plot sebar di Seaborn?
Plot garis di Seaborn menunjukkan hubungan antara dua variabel dengan garis lurus, sedangkan plot sebar menunjukkan hubungan tersebut dengan titik-titik data individual.
Bisakah saya menambahkan garis regresi ke plot garis saya di Seaborn?
Ya, Anda dapat menambahkan garis regresi ke plot garis Anda di Seaborn dengan menggunakan fungsi regplot(), yang membuat dan memplot model regresi linear antara dua variabel.
Bagaimana cara menyimpan plot garis Seaborn saya ke berkas?
Anda dapat menyimpan plot garis Seaborn ke berkas dengan menggunakan fungsi savefig() dari pustaka matplotlib, yang menyimpan figur saat ini ke path dan format berkas yang ditentukan.
