MODUL PERKULIAHAN
W542100001 –
Analisis Data
Visualisasi Interaktif dengan
Plotly
Abstrak Sub-CPMK
Pada modul sebelum ini, sudah dijelaskan bagaimana library Pandas dapat
digunakan untuk membuat plot dasar dan plot time series. Meskipun pustaka Pandas ,
Matplotlib , dan Seaborn adalah pustaka plot data yang sangat baik, mereka hanya
dapat memplot grafik statis. Plot statis seperti gambar non-interaktif sederhana. Dalam
kebanyakan kasus, plot statis cukup untuk menyampaikan informasi. Namun, dalam
beberapa kasus mungkin perlu menambahkan interaktivitas pengguna ke plot.
Pada artikel ini, kita akan melihat bagaimana library Plotly Python dapat
digunakan untuk memplot plot interaktif. Kami akan memplot data geografis
menggunakan plotly dan akan menjelaskan bagaimana pengguna dapat berinteraksi
dengan plot tersebut.
Selain Plotly, kita juga akan menggunakan Cufflinks , yang berfungsi sebagai
penghubung antara perpustakaan Pandas dan Plotly, dan membantu kita memplot
grafik interaktif secara langsung menggunakan kerangka data Pandas.
Untuk menginstal Manset menggunakan pip, jalankan skrip berikut:
$ pip install cufflinks
Terakhir, kita perlu mengimpor library Cufflink dan memastikan bahwa kita akan
menggunakannya secara offline. Untuk melakukannya, jalankan skrip berikut:
import cufflinks as cf
cf.go_offline()
Sekarang kami memiliki semua yang kami butuhkan untuk menggambar grafik
Plotly interaktif di dalam notebook Jupyter kami.
Dataset
Dataset yang akan kita gunakan untuk bagian ini adalah dataset "Tips" yang
diunduh secara default dengan perpustakaan Seaborn. Dataset berisi informasi
tentang jumlah yang dihabiskan oleh sekelompok orang saat makan siang dan makan
malam. Dataset berisi jenis kelamin, harga, tip, usia, ukuran, hari, waktu dan apakah
orang yang makan siang atau makan malam adalah perokok atau bukan.
Skrip berikut mengimpor dataset dan menampilkan lima baris pertama dataset:
import seaborn as sns
dataset = sns.load_dataset('tips')
dataset.head()
Anda dapat melihat bahwa untuk memplot grafik, kami cukup memanggil
plotmetode pada kerangka data kami.
Keluaran:
Dari output, Anda dapat melihat plot garis statis untuk kolom 'total_bill' dan 'tips'.
Sekarang mari kita lihat bagaimana kita dapat menggambar plot interaktif
menggunakan Plotly. Di bagian tempat kami mengimpor perpustakaan, kami
mengimpor fungsi plot() dari modul plotly.offline. Untuk memplot plot interaktif
dataset2.iplot()
Setelah Anda menjalankan skrip di atas, Anda akan melihat plot garis interaktif
untuk total_bill, tipdan sexkolom seperti yang ditunjukkan di bawah ini:
Jika Anda mengarahkan kursor ke plot, Anda akan melihat nilai berubah. Anda
dapat memperbesar dan memperkecil plot menggunakan opsi yang tersedia di sudut
kanan atas plot. Anda juga dapat menambah dan menghapus kolom dari plot.
Terakhir, Anda juga dapat menyimpan grafik sebagai gambar statis.
Di bagian selanjutnya, kita akan memplot beberapa plot interaktif yang paling
Anda dapat melihat dari output bahwa empat batang telah diplot untuk total
tagihan. Bilah menunjukkan semua kemungkinan kombinasi nilai dalam kolom sexdan
time.
Selain menentukan kolom untuk plot batang, Anda cukup memanggil fungsi
agregat pada kerangka data Pandas dan kemudian memanggil iplot()fungsi tersebut
dan meneruskan "bar" sebagai nilai untuk kindatribut. Ini akan memplot bilah untuk
setiap kolom numerik sesuai dengan fungsi agregat. Misalnya, jika Anda ingin
memplot plot batang yang berisi nilai rata-rata untuk total_bill, tipdan sizekolom, Anda
dapat menggunakan skrip berikut:
dataset.mean().iplot(kind='bar')
Di output, Anda dapat melihat plot batang dengan nilai rata-rata untuk total_bill,
tipdan sizekolom.
Selain plot batang vertikal, Anda juga dapat memplot plot batang horizontal.
Yang harus Anda lakukan adalah meneruskan "barh" sebagai atribut ke
kindparameter, seperti yang ditunjukkan pada skrip berikut:
dataset.mean().iplot(kind='barh')
Keluaran:
Scatter Plot
Untuk memplot plot sebar interaktif, Anda harus memberikan "sebar" sebagai
nilai untuk kindparameter iplot()fungsi. Selanjutnya, Anda harus memberikan nama
kolom untuk sumbu x dan y. Skrip berikut memplot plot sebar untuk total_billkolom
pada sumbu x dan tipkolom pada sumbu y.
dataset.iplot(kind='scatter', x='total_bill', y='tip',
mode='markers')
Keluaran:
Arahkan mouse Anda ke plot interaktif untuk melihat perubahan nilai untuk
total_billdan tipkolom.
Box Plot
Dalam salah satu artikel saya sebelumnya, saya menjelaskan apa itu plot kotak
dan bagaimana kita dapat menggambarnya menggunakan perpustakaan Seaborn.
Plot kotak memplot informasi kuartil untuk kolom numerik. Jarak antara kumis bawah
dan bagian bawah kotak menampilkan kuartil pertama. Jarak antara bagian bawah
kotak ke tengah kotak menampilkan kuartil kedua. Demikian pula, jarak dari tengah
Pada output, Anda akan melihat plot kotak untuk semua kolom numerik dalam
data yaitu total_bill, tipdan size.
Keluaran:
Hist Plot
Pustaka Plotly juga dapat digunakan untuk memplot plot histogram interaktif
untuk setiap kolom dalam dataset. Untuk melakukannya, Anda harus memberikan
"hist" sebagai nilai ke kindparameter iplot()fungsi. Anda juga dapat menentukan
jumlah tempat sampah menggunakan binsatribut. Skrip berikut memplot histogram
untuk total_billkolom:
dataset['total_bill'].iplot(kind='hist',bins=25)
Keluaran:
Spread Plot
Plot sebaran menunjukkan sebaran antara dua atau lebih kolom numerik pada
titik tertentu. Misalnya, untuk melihat spread antara total_bildan tip, Anda dapat
menggunakan fungsi spread sebagai berikut:
Anda dapat melihat bahwa pada skrip di atas, untuk locationskunci kami
melewati abbrevkolom dataset kami. Ini berarti bahwa plot geografis untuk semua
negara bagian di Amerika Serikat akan dicetak di layar.
Demikian pula, untuk textkunci kami melewati kolom "Area" yang berisi nama
lengkap negara bagian. Akhirnya, untuk zkuncinya, kami melewati PDB Per kapita
untuk tahun 2017.
Penting juga untuk menyebutkan bahwa kita memiliki kunci baru di sini yaitu
marker. Ini digunakan untuk membuat perbatasan antara negara bagian yang
berbeda. Nilai RGB 255,0,0berarti bahwa perbatasan akan berwarna merah. Lebar 2
menentukan lebar perbatasan adalah 2 piksel.
Langkah selanjutnya adalah membuat layout untuk peta kita. Skrip berikut
melakukan itu:
map_layout = dict(title='USA States GDP Per Capita - 2017',
geo=dict(scope='usa',
showlakes=True,
Mari kita buat kamus data yang akan menyimpan informasi tentang data yang
ingin kita plot dari dataset populasi yang baru saja kita muat.
map_data = dict(
type='choropleth',
locations=df['Country Code'],
z=df['2016'],
text=df['Country'],
colorbar={'title': 'World Population 2016'},
)
Dari skrip di atas, Anda dapat melihat bahwa satu-satunya perubahan yang kami
buat adalah pada locationskuncinya; sekarang kami melewati "Kode Negara" alih-alih
singkatan untuk negara bagian. Ini adalah persyaratan wajib untuk merencanakan plot
geografis dunia. Untuk textkunci, kami meneruskan nilai dari kolom "Negara" yang
berisi nama lengkap negara. Demikian pula, untuk zkunci, kami melewatkan nilai dari
kolom "2016" karena ini adalah kolom yang berisi nilai populasi untuk tahun 2016.
Langkah selanjutnya adalah membuat kamus tata letak. Perhatikan skrip berikut:
map_layout = dict(
title='World Population 2016',
geo=dict(showframe=False)
)
Dalam tata letak, satu-satunya parameter yang kami ubah adalah
showFramekunci untuk geokamus. Jika kunci ini disetel ke False, plot yang dihasilkan
tidak mengandung batas.
Pada output, Anda dapat melihat peta seluruh dunia beserta kepadatan
penduduknya. Anda dapat melihat bahwa peta India dan China lebih gelap
dibandingkan dengan negara-negara lain karena mereka jauh lebih banyak
penduduknya dibandingkan dengan negara-negara Eropa yang berpenduduk lebih
sedikit. Jika Anda mengarahkan mouse ke negara mana pun, Anda akan melihat
nama negara beserta total populasinya.
Mencari panduan yang lebih mendalam tentang Plotly dan pustaka visualisasi
Python lainnya? Lihat Visualisasi Data dengan Python untuk sumber daya yang hebat
di 9 perpustakaan paling populer di luar sana, termasuk fitur, kekuatan, dan nuansa
uniknya.