Algoritma & Struktur Data
Visualisasi Data menggunakan Python
| Kontak | : \(\downarrow\) |
| ali.19arifin@gmail.com | |
| https://www.instagram.com/arifin.alicia/ | |
| RPubs | https://rpubs.com/aliciaarifin/ |
Biodata
Nama : Alicia Arifin
Prodi : Statistika Bisnis
NIM : 20214920001
Visualisasi Data
Visualisasi data adalah teknik mengambil informasi dari data ke dalam bentuk visual yang bisa dilihat oleh mata, seperti bagan, grafik, dan peta. Visualisasi data dibuat untuk memahami data yang besar atau kecil dengan mudah.
R dan Python merupakan platform yang hampir bisa menganalisis semua jenis grafik.
Univariat (satu variabel)
biasanya digunakan untuk melakukan distribusi data dari suatu variabel.
variabel tersebut dibagi menjadi 2= * Kategoris = tidak bisa dihitung * Numerik = bisa dihitung
Variabel Kategori
Variabel kategori biasanya divisualisasikan dalam bentuk diagram batang, lingkaran, atau pohon.
Diagram Batang (Bar Plot)
Berikut ini deperlihatkan cara membuat barplot dengan Python, menggunakan Matplotlib dan Seaborn.
import numpy as np
import matplotlib.pyplot as plt
Usia = [3,12,5,18,45] # numerik
Nama = ('A', 'B','C','D','E') # kategori
pos_y= np.arange(len(Usia)) # reposisi data usia ke array
plt.figure(figsize=(8,6)) # atur ukuran gambarplt.bar(pos_y, Usia) # data numerik## <BarContainer object of 5 artists>
plt.xticks(pos_y,Nama) # data kategori## ([<matplotlib.axis.XTick object at 0x0000000061041670>, <matplotlib.axis.XTick object at 0x0000000061041640>, <matplotlib.axis.XTick object at 0x000000006101C280>, <matplotlib.axis.XTick object at 0x000000006108DA60>, <matplotlib.axis.XTick object at 0x00000000610A11C0>], [Text(0, 0, 'A'), Text(1, 0, 'B'), Text(2, 0, 'C'), Text(3, 0, 'D'), Text(4, 0, 'E')])
plt.xlabel('Nama') # label sumbu x
plt.ylabel('usia') # label sumbu y
plt.show()Note : warna akan acak setiap kali menjalankan coding.
Diatas merupakan array, contoh di bawah ini merupakan datanya dataframe.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
Nama = ['A','B','C','D','E']
Usia = [39,63,45,24,13]
df = pd.DataFrame({"Nama" : Nama,
"Usia" : Usia})
# atur tema plot dan latar belakang
sns.set(style="darkgrid")
#atur ukuran gambar
plt.figure(figsize=(8,6))
#buat diagram batang
sns.barplot(
x = "Nama",
y = "Usia",
data = df,
estimator = sum,
ci = None)
# menampilkan grafiknya
plt.show()
Keterangan: * x : nama kolom data frame yang digunakan untuk sumbu x.
data : data frame yang akan digunakan
estimator: perhitungan berdasarkan kategori
ci : ukuran interval kepercayaan (confidence interval)
color : warna yang digunakan pada diagram batang
Jika ingin visualisasikan barplot vertikal alih-alih versi horizontal, anda hanya perlu menukar posisi parameter x=“day” dan y=“total_bill”.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
Nama = ["A", "B", "C","D", "E"]
Usia = [39, 63, 45, 24, 13]
df = pd.DataFrame({"Nama": Nama,
"Usia": Usia})
# atur tema plot dan latar belakang
sns.set(style="darkgrid")
# atur ukuran gambar
plt.figure(figsize=(8, 6))
# buat diagram batang
sns.barplot(
x = "Usia",
y = "Nama",
data = df,
estimator = sum,
ci = None)
# menampilkan grafiknya
plt.show() Jika anda ingin mengurutkan barplot berdasarkan peringkat grup. Misalnya, Anda ingin memiliki grup dengan nilai tertinggi di atas, dan grup dengan nilai terendah di bawah. Anda harus menyusun ulang data frame menggunakan fungsi sort_values() sebagai berikut:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# membentuk data frame
Nama = ["A", "B", "C","D", "E"]
Usia = [39, 63, 45, 24, 13]
df = pd.DataFrame({"Nama": Nama,
"Usia": Usia})
# Susun ulang data frame
df = df.sort_values(["Usia"], ascending=False).reset_index(drop=True)
# atur tema plot dan latar belakang
sns.set(style="darkgrid")
# atur ukuran gambar
plt.figure(figsize=(8, 6))
# buat diagram batang
sns.barplot(
x = "Usia",
y = "Nama",
data = df,
estimator = sum,
ci = None)
# menampilkan grafiknya
plt.show() Grafik Lingkaran (Piechart)
Pie chart merupakan diagram yang berbentuk lingkaran yang dibagi menjadi beberapa sektor.
Pada python, sebagian besar dilakukan dengan fungsi pie() dari perpustakaan Matplotlib.
import numpy as np
import matplotlib.pyplot as plt
Usia = [3, 12, 5, 18, 45] # data numerik
Nama = ('A', 'B', 'C', 'D', 'E') # data kategori
warna = sns.color_palette('pastel')[0:4] # warna Seaborn yang akan digunakan
# atur ukuran gambar
plt.figure(figsize=(8, 6))
# membuat diagram lingkaran
plt.pie(Usia,
labels = Nama,
colors = warna,
autopct='%.0f%%');
# menampilkan grafiknya ## ([<matplotlib.patches.Wedge object at 0x00000000667B3A60>, <matplotlib.patches.Wedge object at 0x0000000066784190>, <matplotlib.patches.Wedge object at 0x0000000066784970>, <matplotlib.patches.Wedge object at 0x000000006678B0D0>, <matplotlib.patches.Wedge object at 0x00000000667B34C0>], [Text(1.0929159432867397, 0.12463844073822626, 'A'), Text(0.8544237032772618, 0.6927915525451864, 'B'), Text(0.2679092506479593, 1.066876109685304, 'C'), Text(-0.6431907557286864, 0.8923595977772422, 'D'), Text(-0.14529858766390263, -1.0903615549086805, 'E')], [Text(0.5961359690654943, 0.0679846040390325, '4%'), Text(0.4660492926966882, 0.37788630138828344, '14%'), Text(0.1461323185352505, 0.5819324234647113, '6%'), Text(-0.3508313213065562, 0.4867415987875866, '22%'), Text(-0.07925377508940143, -0.5947426663138257, '54%')])
plt.show()Grafik Peta (Treemap)
Treemap menampilkan data membagi bagian dengan persegi/persegi panjang. Dibagi sesuai luas.
Pada python kita bisa menggunakan library squarify untuk menghitung posisi persegi panjang dan memplotnya.
import pandas as pd
import matplotlib.pyplot as plt
import squarify
# buat data dengan data acak/
df = pd.DataFrame({'nb_people':[8,3,4,2],
'group':["A", "B", "C", "D"] })
# atur ukuran gambar
plt.figure(figsize=(8, 6))
# membuat diagram
squarify.plot(sizes = df['nb_people'],
label = df['group'],
#color = ["red","green","blue", "grey"],
alpha=.8 )
plt.axis('off')
# menampilkan grafiknya ## (0.0, 100.0, 0.0, 100.0)
plt.show()Data Numerik
Data numerik bisa divisualisasikan dengan histogram, kepadatan kernel, atau diagram titik.
Grafik Histogram
Histogram bisa dibuat dengan python menggunakan library seaborn dan matplotlib
Menggambar histogram sederhana dengan parameter default
import seaborn as sns
import matplotlib.pyplot as plt
# ukuran gambar
plt.figure(figsize=(8, 6))
# latar belakang abu-abu
sns.set_theme(style="darkgrid")
df = sns.load_dataset("iris")
sns.histplot(data=df, x="sepal_length", bins=20, kde=True)
plt.show()JIka ingin menampilkan dua variabel dalam satu grafik yang sama
import seaborn as sns
import matplotlib.pyplot as plt
# atur ukuran gambar
plt.figure(figsize=(8, 6))
# atur latar belakang abu-abu
sns.set_theme(style="darkgrid")
df = sns.load_dataset("iris")
sns.histplot(data=df, x="sepal_length", color="skyblue", label="Sepal Length", kde=True)
sns.histplot(data=df, x="sepal_width", color="red", label="Sepal Width", kde=True)
# menampilkan grafiknya
plt.legend()
plt.show()Jika ingin membagi histogram menjadi beberapa bagian, kita bisa menggunakan cara barikut.
import seaborn as sns
import matplotlib.pyplot as plt
# atur latar belakang abu-abu
sns.set_theme(style="darkgrid")
df = sns.load_dataset("iris")
#membagi grafik 2 kali 2
fig,axs = plt.subplots(2,2, figsize=(7,7))
sns.histplot(data=df, x="sepal_length", color="skyblue", kde=True, ax= axs[0,0])
sns.histplot(data=df, x="sepal_length", color="olive", kde=True, ax= axs[0,1])
sns.histplot(data=df, x="petal_length", color="gold", kde=True, ax= axs[1,0])
sns.histplot(data=df, x="petal_length", color="teal", kde=True, ax= axs[1,1])
plt.show()Grafik Kepadatan Kernel
alternatif histogram -> grafik kepadatan kernel. Grafik kepadatan kernel mencoba menggambar histogram yang dihaluskan, area di bawah kurva =1
import seaborn as sns
import matplotlib.pyplot as plt
# atur latar belakang abu-abu
sns.set_theme(style="darkgrid")
df = sns.load_dataset("iris")
# membagi grafik 2 kali 2
fig, axs = plt.subplots(2, 2, figsize=(7, 7))
sns.kdeplot(data=df, x="sepal_length", color="skyblue", shade=True, ax=axs[0, 0])
sns.kdeplot(data=df, x="sepal_width", color="olive", shade=True, ax=axs[0, 1])
sns.kdeplot(data=df, x="petal_length",color="gold", shade=True, ax=axs[1, 0])
sns.kdeplot(data=df, x="petal_width", color="teal", shade=True, ax=axs[1, 1])
plt.show()opsi lain yg bisa digunakan adalah dengan menggabungkan semua plot tersebut. Sebenernya bisa, tetapi berantakan (tumpang tindih). Solusi yang lebih mudah menggunakan transparansi.
import seaborn as sns
import matplotlib.pyplot as plt
from plotnine.data import diamonds
# Tetapkan ukuran gambar untuk notebook
plt.rcParams["figure.figsize"]=8,6
# atur tema whitegrid seaborn
sns.set(style="whitegrid")
# Tanpa transparansi
sns.kdeplot(data = diamonds,
x = "price",
hue = "cut",
cut = 0,
fill = True,
common_norm = False,
alpha = 0.4) # penyesuaian transparansi dengan nilai alpha
plt.show()Solusi lain yang dapat dilakukan adalah menumpuk grup dengan melewati “isi” ke beberapa argumen fungsi. Hal ini memungkinkan untuk melihat grup mana yang paling sering untuk nilai tertentu, tetapi sulit untuk memahami distribusi grup yang tidak berada di bagian bawah bagan.
import seaborn as sns
import matplotlib.pyplot as plt
from plotnine.data import diamonds
# atur ukuran gambar
plt.figure(figsize=(8, 6))
# atur tema whitegrid seaborn
sns.set(style="whitegrid")
# plot kepadatan bertumpuk
sns.kdeplot(data = diamonds,
x = "price",
hue = "cut",
common_norm = False,
multiple = "fill",
alpha = 0.7)
plt.show() contoh di bawah ini merupakan penggunaan grafik kepadatan kernel yang sesuai dengan menggunakan contoh dataset ini.
karena grafik yang akan dibuat dari coding di bawah ini ditumpuk, maka akan lebih mudah untuk menambahkan nama/ keterangan di sebelah grafik.
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
# atur ukuran gambar
plt.figure(figsize=(8, 6))
# atur tema whitegrid seaborn
sns.set(style="whitegrid")
# memuat dataset dari GitHub dan mengubah formatnya
data = pd.read_csv("https://raw.githubusercontent.com/dsciencelabs/dataset/master/probly.csv")
data = pd.melt(data, var_name='text', value_name='value')
# memuat beberapa variabel dari dataset
data = data.loc[data.text.isin(["Almost No Chance",
"About Even",
"Probable",
"Almost Certainly"])]
# plot kepadatan kernel
p = sns.kdeplot(data = data,
x = "value",
hue = "text",
fill = True,
common_norm = False,
alpha = 0.6,
palette = "viridis",
legend = False)
# kontrol batas sumbu x
plt.xlim(0, 100)
# Anotasi data frame## (0.0, 100.0)
annot = pd.DataFrame({
'x': [5, 53, 65, 79],
'y': [0.15, 0.4, 0.06, 0.1],
'text': ["Hampir Tidak Mungkin",
"Memungkinkan",
"Sangat Mungkin",
"Hampir pasti"]
})
# tambahkan anotasi satu per satu dengan loop
for point in range(0,len(annot)):
p.text(annot.x[point],
annot.y[point],
annot.text[point],
horizontalalignment='left',
size='large')
# tambahkan nama sumbu
plt.xlabel("Probabilitas dalam (%)")
plt.ylabel("Densitas Kernel")
plt.show()Grafik Lolipop
grafik lolipop seperti grafik titik yang diberi tangkai di bawahnya. grafik lolipop bisa menjadi alternatif dari barplot.
Kita bisa membuat lollipop menggunakan library matplotlib.
Contohnya coding di bawah ini, Strategi di sini adalah menggunakan fungsi stem() atau meretas fungsi vline() tergantung pada format input.
# memuat dataframe
import pandas as pd
df = pd.DataFrame({'group':list(map(chr, range(65, 85))),
'values':np.random.uniform(size=20) })
# mengurutkan berdasarkan nilai
ordered_df = df.sort_values(by='values')
my_range=range(1,len(df.index)+1)
# ukuran gambar
plt.figure(figsize=(8, 6))
# tema whitegrid seaborn
sns.set(style="whitegrid")
# buat plotnya
plt.stem(ordered_df['values'])## <StemContainer object of 3 artists>
plt.xticks(my_range, ordered_df['group'])## ([<matplotlib.axis.XTick object at 0x0000000064C0EDF0>, <matplotlib.axis.XTick object at 0x0000000064C0ED60>, <matplotlib.axis.XTick object at 0x0000000064C28820>, <matplotlib.axis.XTick object at 0x0000000064BD1F40>, <matplotlib.axis.XTick object at 0x00000000A74A5DC0>, <matplotlib.axis.XTick object at 0x00000000A74BA550>, <matplotlib.axis.XTick object at 0x00000000A74BACA0>, <matplotlib.axis.XTick object at 0x00000000A74BAD90>, <matplotlib.axis.XTick object at 0x0000000064BD1820>, <matplotlib.axis.XTick object at 0x00000000A74BD670>, <matplotlib.axis.XTick object at 0x00000000A74BDDC0>, <matplotlib.axis.XTick object at 0x00000000587C3550>, <matplotlib.axis.XTick object at 0x00000000587C3CA0>, <matplotlib.axis.XTick object at 0x00000000587C9430>, <matplotlib.axis.XTick object at 0x00000000587C3D90>, <matplotlib.axis.XTick object at 0x00000000A74BDDF0>, <matplotlib.axis.XTick object at 0x00000000587C9A60>, <matplotlib.axis.XTick object at 0x00000000587C7040>, <matplotlib.axis.XTick object at 0x00000000587C7700>, <matplotlib.axis.XTick object at 0x00000000587C7E50>], [Text(1, 0, 'K'), Text(2, 0, 'P'), Text(3, 0, 'M'), Text(4, 0, 'B'), Text(5, 0, 'N'), Text(6, 0, 'S'), Text(7, 0, 'L'), Text(8, 0, 'Q'), Text(9, 0, 'D'), Text(10, 0, 'H'), Text(11, 0, 'F'), Text(12, 0, 'A'), Text(13, 0, 'J'), Text(14, 0, 'I'), Text(15, 0, 'C'), Text(16, 0, 'G'), Text(17, 0, 'O'), Text(18, 0, 'R'), Text(19, 0, 'E'), Text(20, 0, 'T')])
plt.show()Grafik diatas menjelaskan cara membuat plot lollipop vertikal. Pada contoh di bawah adalah grafik horizontal menggunakan fungsi hlines() dari matplotlib, “grup B” ditampilkan dengan warna dan ukuran penanda yang berbeda. Untuk melakukannya, variabel my_color didefinisikan; ‘oranye’ untuk grup B dan ‘biru langit’ untuk grup yang tersisa. Variabel warna ini diteruskan ke fungsi hlines() sebagai argumen. Untuk mengubah ukuran marker, fungsi scatter() dari matplotlib digunakan.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'group':list(map(chr, range(65, 85))),
'values':np.random.uniform(size=20) })
# mengurutkan berdasarkan nilai
ordered_df = df.sort_values(by='values')
my_range=range(1,len(df.index)+1)
# Buat warna jika grupnya adalah "B"
my_color=np.where(ordered_df ['group']=='B', 'orange', 'skyblue')
my_size=np.where(ordered_df ['group']=='B', 70, 30)
# atur ukuran gambar
plt.figure(figsize=(8, 6))
# atur tema whitegrid seaborn
sns.set(style="whitegrid")
# Plot horizontal dibuat menggunakan fungsi hline()
plt.hlines(y = my_range,
xmin = 0,
xmax = ordered_df['values'],
color = my_color,
alpha = 0.48)
plt.scatter(ordered_df['values'],
my_range,
color=my_color,
s=my_size,
alpha=1)
# Tambahkan judul dan nama sumbu
plt.yticks(my_range, ordered_df['group'])## ([<matplotlib.axis.YTick object at 0x00000000587D8220>, <matplotlib.axis.YTick object at 0x00000000587C7D00>, <matplotlib.axis.YTick object at 0x00000000A74A5FA0>, <matplotlib.axis.YTick object at 0x0000000058A5C7C0>, <matplotlib.axis.YTick object at 0x0000000058A62040>, <matplotlib.axis.YTick object at 0x0000000058A62670>, <matplotlib.axis.YTick object at 0x0000000058A5C880>, <matplotlib.axis.YTick object at 0x0000000058A62C10>, <matplotlib.axis.YTick object at 0x0000000058A683A0>, <matplotlib.axis.YTick object at 0x0000000058A68AF0>, <matplotlib.axis.YTick object at 0x0000000058A71280>, <matplotlib.axis.YTick object at 0x0000000058A719D0>, <matplotlib.axis.YTick object at 0x0000000058A71CA0>, <matplotlib.axis.YTick object at 0x0000000058A68BB0>, <matplotlib.axis.YTick object at 0x0000000058A5C520>, <matplotlib.axis.YTick object at 0x0000000058A77670>, <matplotlib.axis.YTick object at 0x0000000058A77DC0>, <matplotlib.axis.YTick object at 0x0000000058A7F550>, <matplotlib.axis.YTick object at 0x0000000058A7FCA0>, <matplotlib.axis.YTick object at 0x0000000058A7FD90>], [Text(0, 1, 'K'), Text(0, 2, 'P'), Text(0, 3, 'B'), Text(0, 4, 'H'), Text(0, 5, 'F'), Text(0, 6, 'R'), Text(0, 7, 'S'), Text(0, 8, 'N'), Text(0, 9, 'I'), Text(0, 10, 'G'), Text(0, 11, 'L'), Text(0, 12, 'D'), Text(0, 13, 'T'), Text(0, 14, 'J'), Text(0, 15, 'Q'), Text(0, 16, 'C'), Text(0, 17, 'M'), Text(0, 18, 'A'), Text(0, 19, 'E'), Text(0, 20, 'O')])
plt.title("Fokus dengan Grup B", loc='left')
plt.xlabel('Nilai Variabel')
plt.ylabel('Grup')
plt.show()Bivariat (Dua Variabel)
Bi artinya dua. jadi bivariat merupakan hubungan antara dua variabel.
Jenis grafik yang dipakai itu ditentukan dengan variabel kategoti atau numerik (kuantitatif)
Dua Variabel Kategori
Boxplot
import seaborn as sns # impor perpustakaan seaborn
from warnings import filterwarnings # untuk menghindari peringatan
df = sns.load_dataset('tips') # memuat dataset dari seaborn
# atur ukuran gambar
plt.figure(figsize=(8, 6))
# atur tema whitegrid seaborn
sns.set(style="whitegrid")
# membuat grafik boxplotnya
sns.boxplot(x = 'day',
y = 'total_bill',
data = df,
hue = 'smoker')
# menampilkan grafiknya
plt.show() dari graik boxplot di atas, bisa disimpulkan kalau pada hari kamis, rata-rata tagihan orang yang merokok lebih tinggi sedikit daripada yang tidak merokok. pada hari jumat, tagihan orang yang tidak merokok lebih besar daripada orang merokok. Sedangkan pada hari sabtu dan minggu, orang yang merokok tagihannya lebih besar daripada orang yang tidak merokok. Walaupun tagihan orang tidak merokok lebih rendah daripada org merokok pada hari sabtu, pada box plot memiliki pencilan sebanyak 4 nilai. yang berarti ada juga orang yang tagihannya lebih besar daripada orang merokok.
Dari gambar tersebut juga kita bisa melihat adanya pencilan.
Grafik Biola (Violinplot)
Seaborn secara khusus disesuaikan untuk membuatnya berkat fungsi biola().
grafik biola ini visualisisanya lebih “bagus” dari boxplot karena pada violin plot merupakan boxplot yang digabungkan dengan estimasi kepadatan kernel (histogram yang dihaluskan) untuk mendistribusikan suatu data.
import seaborn as sns
from warnings import filterwarnings
import matplotlib.pyplot as plt
df = sns.load_dataset('tips') # memuat dataset dari seaborn
# atur ukuran gambar
plt.figure(figsize=(8, 6))
# atur tema whitegrid seaborn
sns.set(style="whitegrid")
# Grouped violinplot
sns.violinplot(x = "day",
y = "total_bill",
hue = "smoker",
data = df,
palette = "Pastel1")
plt.show()Numerik vs Numerik
biasa ditampilkan menggunakan scatterplots dan grafik garis.
Plot Pencar (Scatterplot)
Sebuah plot pencar menampilkan hubungan antara 2 variabel numerik. Setiap titik data direpresentasikan sebagai lingkaran.
Contoh untuk memplot scatter plot adalah, coding di bawah ini untuk melihat transaksi permintaan dan penawaran suatu pruduk pada perusahaan ABC.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# atur ukuran gambar
plt.figure(figsize=(8, 6))
# atur tema whitegrid seaborn
sns.set(style="whitegrid")
df=pd.DataFrame({'x_values': range(1,101),
'y_values': np.random.randn(100)*15+range(1,101) })
plt.plot('x_values',
'y_values',
data = df,
linestyle = 'none',
marker = 'o')
# menambahkan label
plt.xlabel('Permintaan')
plt.ylabel('Penawaran')
plt.show()Grafik Garis
Grafik garis menunjukkan grafik dalam bentuk garis. Grafik Garis menampilkan evolusi satu atau beberapa variabel numerik.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# atur ukuran gambar
plt.figure(figsize=(8, 6))
# atur tema whitegrid seaborn
sns.set(style="whitegrid")
df=pd.DataFrame({'x_values': range(1,101),
'y_values': np.random.randn(100)*15+range(1,101) })
plt.plot('x_values',
'y_values',
data = df
)
# menambahkan label
plt.xlabel('Permintaan')
plt.ylabel('Penawaran')
plt.show()Multivariat (Multi Variabel)
Grafik multivariat merupakan hubungan lebih dari dua bariabel. Biasnaya ada dua cara yaitu pengelompokan dan faceting.
Grafik Scatter dan Grup
Jadi kita akan menggunakan library seaborn. di library tersebut bisa memplot kemampuan untuk membedakan warna untuk subset data yang berbeda.
Dalam contoh berikut, dataset iris dari repositori seaborn digunakan. Menggunakan argumen hue, dimungkinkan untuk menentukan grup dalam data Anda dengan warna atau bentuk yang berbeda.
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('iris')
# ukuran gambar
plt.figure(figsize=(8, 6))
# tema
sns.set(style="whitegrid")
# Gunakan argumen 'hue' untuk menambahkan variabel faktor
sns.lmplot(x = "sepal_length",
y = "sepal_width",
data = df,
fit_reg = False,
hue = 'species',
legend = False,
markers=["o", "x", "1"]);
# Pindahkan legend ke bagian plot yang kosong plt.legend(loc='lower right')
plt.show()Grafik Korelogram
Kore atau korelasi. yang berarti grafik kolegram ini berhubungan dengan hubungan setiap variabel dengan variabel numerik dari suatu matriks. Korelasi divisualisasikan sebagai scatterplot. Pada diagonal grafik ini, mewakili distribusi setiap variabel dengan histogram atau plot kepadatan.
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('iris')
# memuat grafik korelogram
sns.pairplot(df,
kind = "scatter",
hue = "species",
markers = ["o", "s", "D"],
palette = "Set2")plt.show()Grafik Berlapis (Faceting)
Faceting ini digunakan untuk membandingkan banyak variabel. Faceting ini membandingkan variabel satu ke yang lainnya dengan menggunakan parameer yang sama.
Saya percaya bahwa grafik area sangat berguna ketika digunakan melalui faceting. Hal ini memungkinkan untuk dengan cepat mengetahui pola yang berbeda yang ada dalam data. Andaikan kita memiliki 2 variabel numerik (tahun dan nilai sesuatu), dan variabel kategoris (negara). Grafik area dapat diterapkan menggunakan fungsi fill_between() dari matplotlib. Sedangkan grafik berlapis dibuat menggunakan utilitas FacetGrid() yang mengagumkan dari seaborn.
import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
my_count=["France","Australia","Japan","USA","Germany",
"Congo","China","England","Spain","Greece",
"Marocco","South Africa","Indonesia","Peru",
"Chili","Brazil"]
df = pd.DataFrame({
"country":np.repeat(my_count, 10),
"years":list(range(2000, 2010)) * 16,
"value":np.random.rand(160)
})
# Inisialisasi grafik berlapis
g = sns.FacetGrid(df, col='country', hue='country', col_wrap=4)
# Tambahkan garis di atas area dengan fungsi plot
g = g.map(plt.plot, 'years', 'value')
# Isi area dengan fill_between
g = g.map(plt.fill_between,
'years',
'value',
alpha=0.2).set_titles("{col_name} country")
# Pengaturan nama variabel setiap aspek
g = g.set_titles("{col_name}")
# Tambahkan nama variabel untuk keseluruhan plot
plt.subplots_adjust(top=0.92)
g = g.fig.suptitle('Evolusi harga suatu produk di 16 negara ')
plt.show()Referensi
Referensi di atas terdapat referensi sebagai berikut. * https://bookdown.org/BaktiSiregar/data-science-for-beginners/Visualization.html