Assalamu‘alaikum wr. wb.
Halo guys! Jika sebelumnya sudah membahas tentang Visualisasi Data menggunakan Python Matplotlib, kali ini kita akan menjelaskan Visualisasi Data menggunakan Seaborn.
Sumber Artikel Materi : Geeksforgeeks.org
Terkadang mungkin terlihat lebih mudah untuk melalui sekumpulan titik data dan menghasilkan wawasan darinya, tetapi biasanya proses ini mungkin tidak memberikan hasil yang baik. Banyak hal dapat tertinggal sebagai hasil dari proses ini. Selain itu, sebagian besar set data yang digunakan dalam kehidupan nyata terlalu besar untuk dianalisis secara manual. Inilah inti dari peran visualisasi data.
Visualisasi data adalah cara yang lebih mudah untuk menyajikan data, seberapa pun kompleksnya, untuk menganalisis tren dan hubungan antar variabel dengan bantuan representasi gambar.
Berikut adalah keuntungan dari Visualisasi Data :
- Representasi lebih mudah dari data yang kompleks.
- Menyoroti area yang baik dan buruk dalam kinerja.
- Mengeksplorasi hubungan antara titik data.
- Mengidentifikasi pola data bahkan untuk titik data yang lebih besar.
Saat membangun visualisasi, selalu disarankan untuk mempertimbangkan beberapa poin berikut :
- Pastikan penggunaan yang tepat dari bentuk, warna, dan ukuran saat membangun visualisasi.
- Plot/grafik menggunakan sistem koordinat lebih terlihat.
- Pengetahuan tentang plot yang sesuai dengan jenis data membawa lebih banyak kejelasan pada informasi.
- Penggunaan label, judul, legenda, dan penunjuk memberikan informasi yang lancar kepada audiens yang lebih luas.
Sifat Visualisasi
Tergantung pada jumlah variabel yang digunakan untuk membuat visualisasi dan jenis variabelnya, dapat ada berbagai jenis grafik yang dapat kita gunakan untuk memahami hubungan. Berdasarkan jumlah variabel, kita bisa memiliki :
- Plot Univariat (melibatkan hanya satu variabel)
- Plot Bivariat (lebih dari satu variabel yang diperlukan)
- Plot Univariat dapat digunakan untuk variabel kontinu untuk memahami sebaran dan distribusi variabel, sementara untuk variabel diskrit, ini dapat memberi tahu kita jumlahnya.
Demikian pula, Plot Bivariat untuk variabel kontinu dapat menampilkan statistik penting seperti korelasi, untuk variabel kontinu versus diskrit dapat membawa kita pada kesimpulan yang sangat penting seperti pemahaman distribusi data di berbagai tingkat variabel kategorikal. Plot bivariat antara dua variabel diskrit juga dapat dikembangkan.
Sebelum memulai, Anda bisa mengunduh (Download) File diabetes.csv di sini.
1. Plot Kotak (Box Plot)
Sebuah diagram kotak (boxplot), juga dikenal sebagai diagram kotak dan cambuk, kotak dan cambuk jelas ditampilkan dalam gambar di bawah ini. Ini adalah representasi visual yang sangat baik ketika datang untuk mengukur distribusi data. Dengan jelas menunjukkan nilai median, pencilan, dan kuartil. Pemahaman distribusi data adalah faktor penting lainnya yang mengarah pada pembangunan model yang lebih baik. Jika data memiliki pencilan, diagram kotak adalah cara yang direkomendasikan untuk mengidentifikasinya dan mengambil tindakan yang diperlukan.
Sintaks :
seaborn.boxplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, width=0.8, dodge=True, fliersize=5, linewidth=None, whis=1.5, ax=None, **kwargs)
Parameter :
- x, y, hue: Input untuk memplot data bentuk panjang.
- data: Kumpulan data untuk pembuatan plot. Jika x dan y tidak ada, maka diartikan sebagai bentuk lebar.
- color: Warna untuk semua elemen.
Diagram kotak dan cambuk menunjukkan bagaimana data tersebar. Lima informasi umumnya disertakan dalam diagram ini :
- Minimum ditunjukkan di ujung kiri diagram, di ujung "cambuk" kiri
- Kuartil pertama, Q1, berada di ujung kiri kotak (cambuk kiri)
- Median ditunjukkan sebagai garis di tengah kotak
- Kuartil ketiga, Q3, ditunjukkan di ujung kanan kotak (cambuk kanan)
- Maksimum berada di ujung kanan kotak
Seperti yang dapat dilihat dalam representasi dan diagram di bawah ini, diagram kotak dapat digambarkan untuk satu atau lebih variabel, memberikan wawasan yang sangat baik pada data kita.
a. Box Plot dan Violin Plot
Contoh :
import matplotlib.pyplot as pltimport seaborn as snsimport pandas as pd # Import pandas or use your dataset# Sample data (replace this with your actual dataset)diabetes = pd.read_csv("diabetes.csv")# Box plot and violin plot for Outcome vs BloodPressure_, axes = plt.subplots(1, 2, sharey=True, figsize=(10, 4))# Box plot illustrationsns.boxplot(x='Outcome', y='BloodPressure', data=diabetes, ax=axes[0])# Violin plot illustrationsns.violinplot(x='Outcome', y='BloodPressure', data=diabetes, ax=axes[1])# Show the plotsplt.show()
Output :
b. Multiple Box Plot
Contoh :
import seaborn as snsimport pandas as pd # Import pandas or use your dataset# Sample data (replace this with your actual dataset)diabetes = pd.read_csv("diabetes.csv")# Box plot for all the numerical variablessns.set(rc={'figure.figsize': (16, 5)})# Multiple box plot illustrationsns.boxplot(data=diabetes.select_dtypes(include='number'))# Show the plotplt.show()
Output :
2. Scatter Plot
Diagram pencar atau scatter plot adalah diagram bivariat yang memiliki kemiripan yang besar dengan grafik garis dalam cara pembuatannya. Grafik garis menggunakan garis pada sumbu X-Y untuk memplot fungsi kontinu, sementara scatter plot mengandalkan titik-titik untuk merepresentasikan data individual. Plot ini sangat berguna untuk melihat apakah dua variabel saling berkorelasi. Scatter plot bisa berdimensi 2 atau 3.
Sintaks :
seaborn.scatterplot(x=None, y=None, hue=None, style=None, size=None, data=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, markers=True, style_order=None, x_bins=None, y_bins=None, units=None, estimator=None, ci=95, n_boot=1000, alpha=’auto’, x_jitter=None, y_jitter=None, legend=’brief’, ax=None, **kwargs)
Parameter :
- x, y: Variabel data input yang seharusnya bersifat numerik.
- data: Dataframe di mana setiap kolom adalah variabel dan setiap baris adalah suatu observasi.
- size: Variabel pengelompokan yang akan menghasilkan titik-titik dengan ukuran yang berbeda.
- style: Variabel pengelompokan yang akan menghasilkan titik-titik dengan penanda yang berbeda.
- palette: Variabel pengelompokan yang akan menghasilkan titik-titik dengan penanda yang berbeda.
- markers: Objek yang menentukan bagaimana menggambar penanda untuk berbagai tingkatan.
- alpha: Proporsional opasitas titik-titik.
Pengembalian : Metode ini mengembalikan objek Axes dengan plot yang digambar di atasnya.
Keuntungan dari Plot Sebar (Scatter Plot) :
- Menampilkan korelasi antar variabel
- Cocok untuk kumpulan data besar
- Lebih mudah untuk menemukan cluster data
- Representasi yang lebih baik dari setiap titik data
a. 2D Scatter Plot
Contoh :
import seaborn as snsimport matplotlib.pyplot as pltimport pandas as pd # Import pandas or use your dataset# Sample data (replace this with your actual dataset)diabetes = pd.read_csv("diabetes.csv")# Scatter plot illustration using Seabornplt.figure(figsize=(8, 6))sns.scatterplot(x='DiabetesPedigreeFunction', y='BMI', data=diabetes, hue='Outcome', palette='viridis')# Set plot labels and titleplt.title('2D Scatter Plot of DiabetesPedigreeFunction vs BMI')plt.xlabel('DiabetesPedigreeFunction')plt.ylabel('BMI')# Show the plotplt.show()
Output :
b. 3D Scatter Plot
Contoh :
import seaborn as snsimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D# Assign axis valuesx = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]y = [5, 6, 2, 3, 13, 4, 1, 2, 4, 8]z = [2, 3, 3, 3, 5, 7, 9, 11, 9, 10]# Adjust size of plotsns.set(rc={'figure.figsize': (8, 7)})fig = plt.figure()ax = fig.add_subplot(111, projection='3d')ax.scatter(x, y, z, c='r', marker='o')# Assign labelsax.set_xlabel('X Label')ax.set_ylabel('Y Label')ax.set_zlabel('Z Label')# Set equal aspect ratio for all axesax.set_box_aspect([1, 1, 1])# Display illustrationplt.show()
Output :
3. Histogram
Histogram menampilkan hitungan data dan karena itu mirip dengan diagram batang. Histogram juga dapat memberi tahu seberapa dekat distribusi data dengan kurva normal. Saat bekerja dengan metode statistik, sangat penting memiliki data yang terdistribusi normal atau mendekati distribusi normal. Namun, histogram bersifat univariat dan diagram batang bivariat.
Diagram batang memetakan hitungan aktual terhadap kategori, misalnya tinggi batang menunjukkan jumlah item dalam kategori tersebut, sedangkan histogram menampilkan variabel kategoris yang sama dalam bin.
Bin adalah bagian integral saat membangun histogram yang mengontrol titik-titik data yang berada dalam suatu rentang. Sebagai pilihan yang umum diterima, kita biasanya membatasi bin dengan ukuran 5-20, namun hal ini sepenuhnya dikendalikan oleh titik-titik data yang ada.
Contoh :
import seaborn as snsimport matplotlib.pyplot as pltimport pandas as pd # Import pandas or use your dataset# Sample data (replace this with your actual dataset)diabetes = pd.read_csv("diabetes.csv")# Features for the histogramfeatures = ['BloodPressure', 'SkinThickness']# Set the style for the plotsns.set(style="whitegrid")# Create a figure with subplotsfig, axes = plt.subplots(nrows=1, ncols=2, figsize=(12, 5))# Plot histograms for each featurefor i, feature in enumerate(features):sns.histplot(data=diabetes, x=feature, kde=True, ax=axes[i], color='blue')axes[i].set_title(f'Histogram of {feature}')# Adjust layoutplt.tight_layout()# Show the plotplt.show()
Output :
4. Plot Hitungan (Countplot)
Countplot adalah plot antara variabel kategoris dan variabel kontinu. Variabel kontinu dalam hal ini adalah jumlah kali variabel kategoris tersebut hadir atau hanya frekuensinya. Secara konsep, count plot dapat dikatakan erat kaitannya dengan histogram atau diagram batang.
Sintaks :
seaborn.countplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, dodge=True, ax=None, **kwargs)
Parameter : Metode ini menerima parameter berikut yang dijelaskan di bawah ini:
- x, y: Parameter ini mengambil nama variabel dalam data atau data vektor, opsional, Input untuk memplot data format panjang.
- hue: (opsional) Parameter ini mengambil nama kolom untuk encoding warna.
- data: (opsional) Parameter ini mengambil DataFrame, array, atau daftar array, Dataset untuk memplot. Jika x dan y tidak ada, ini diinterpretasikan sebagai format lebar. Jika tidak diharapkan menjadi format panjang.
- order, hue_order: (opsional) Parameter ini mengambil daftar string. Urutan untuk memplot tingkatan kategoris, jika tidak tingkatan diambil dari objek data.
- orient: (opsional) Parameter ini mengambil "v" | "h", Orientasi plot (vertikal atau horizontal). Ini biasanya disimpulkan dari dtype dari variabel input tetapi dapat digunakan untuk menentukan saat variabel "kategoris" adalah numerik atau saat memplot data format lebar.
- color: (opsional) Parameter ini mengambil warna matplotlib, Warna untuk semua elemen, atau seed untuk palet gradien.
- palet: (opsional) Parameter ini mengambil nama palet, daftar, atau kamus, Warna yang digunakan untuk tingkatan berbeda dari variabel hue. Harus sesuatu yang dapat diinterpretasikan oleh color_palette(), atau kamus pemetaan tingkatan hue ke warna matplotlib.
- saturation: (opsional) Parameter ini mengambil nilai float, Proporsi saturasi asli untuk menarik warna. Patches besar sering terlihat lebih baik dengan warna sedikit desaturasi, tetapi atur ini menjadi 1 jika Anda ingin warna plot sempurna cocok dengan spesifikasi warna input.
- dodge: (opsional) Parameter ini mengambil nilai bool, Ketika nesting hue digunakan, apakah elemen harus digeser sepanjang sumbu kategoris.
- ax: (opsional) Parameter ini mengambil matplotlib Axes, Objek Axes untuk menggambar plot, jika tidak menggunakan Axes saat ini.
- kwargs: Parameter ini mengambil pemetaan kunci, nilai, Argumen kata kunci lainnya yang dilewatkan ke matplotlib.axes.Axes.bar().
Hasil/Pengembalian : Mengembalikan objek Axes dengan plot yang digambar di atasnya.
Countplot hanya menunjukkan jumlah kemunculan suatu item berdasarkan jenis kategori tertentu. Dalam bahasa Python, kita dapat membuat count plot menggunakan pustaka seaborn. Seaborn adalah modul dalam Python yang dibangun di atas matplotlib dan digunakan untuk plot statistik yang menarik secara visual.
Contoh :
import seaborn as snsimport matplotlib.pyplot as pltimport pandas as pd # Import pandas or use your dataset# Sample data (replace this with your actual dataset)diabetes = pd.read_csv("diabetes.csv")# Set the style for the plotsns.set(style="whitegrid")# Create a figure with subplotsfig, axes = plt.subplots(nrows=1, ncols=2, figsize=(12, 4))# Illustrate count plotssns.countplot(x='Outcome', data=diabetes, ax=axes[0], palette="pastel")axes[0].set_title('Count Plot of Outcome')sns.countplot(x='BloodPressure', data=diabetes, ax=axes[1], palette="pastel")axes[1].set_title('Count Plot of BloodPressure')# Adjust layoutplt.tight_layout()# Show the plotplt.show()
Output :
5. Plot Korelasi
Plot korelasi adalah analisis multivariat yang sangat berguna untuk melihat hubungan antar titik data. Scatter plot membantu memahami pengaruh satu variabel terhadap variabel lainnya. Korelasi dapat didefinisikan sebagai pengaruh yang satu variabel berikan terhadap variabel lainnya.
Korelasi dapat dihitung antara dua variabel atau dapat pula merupakan korelasi satu terhadap banyak, seperti yang dapat kita lihat pada plot di bawah ini. Korelasi dapat bersifat positif, negatif, atau netral, dan rentang matematis dari korelasi adalah dari -1 hingga 1. Memahami korelasi dapat memiliki pengaruh yang sangat signifikan pada tahap pembangunan model dan juga pemahaman terhadap keluaran model.
Contoh :
import seaborn as snsimport matplotlib.pyplot as pltimport pandas as pdimport numpy as np# Fetch the Boston Housing dataset from the original sourcedata_url = "http://lib.stat.cmu.edu/datasets/boston"raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])target = raw_df.values[1::2, 2]# Create a DataFrame with the fetched databoston_df = pd.DataFrame(data, columns=["CRIM", "ZN", "INDUS", "CHAS", "NOX", "RM", "AGE", "DIS", "RAD", "TAX", "PTRATIO", "B", "LSTAT"])boston_df["MEDV"] = target # Adding the target variable (median value of owner-occupied homes)# Set the style for the plotsns.set(style="white")# Adjust plot sizeplt.figure(figsize=(14, 10))# Illustrate a heatmap of the correlation matrixsns.heatmap(boston_df.corr(), cmap=sns.cubehelix_palette(20, light=0.95, dark=0.15), annot=True)# Set plot titleplt.title('Correlation Matrix Heatmap')# Show the plotplt.show()
Output :
6. Peta Panas (Heat Maps)
Heatmap adalah representasi data multivariat. Intensitas warna dalam heatmap menjadi faktor penting untuk memahami pengaruh titik data. Heatmap lebih mudah dipahami dan lebih mudah dijelaskan. Ketika datang ke analisis data menggunakan visualisasi, sangat penting bahwa pesan yang diinginkan tersampaikan dengan bantuan plot.
Sintaks :
seaborn.heatmap(data, *, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt=’.2g’, annot_kws=None, linewidths=0, linecolor=’white’, cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels=’auto’, yticklabels=’auto’, mask=None, ax=None, **kwargs)
Parameter: Metode ini menerima parameter-parameter berikut yang dijelaskan di bawah ini :
- x, y: Parameter ini mengambil nama variabel dalam data atau data vektor, opsional, Input untuk plotting data bentuk panjang.
- hue: (opsional) Parameter ini mengambil nama kolom untuk pengkodean warna.
- data: (opsional) Parameter ini mengambil DataFrame, array, atau daftar array, Dataset untuk plotting. Jika x dan y tidak ada, ini diinterpretasikan sebagai bentuk lebar. Jika tidak, diharapkan untuk menjadi bentuk panjang.
- color: (opsional) Parameter ini mengambil warna matplotlib, Warna untuk semua elemen, atau seed untuk palet gradien.
- palette: (opsional) Parameter ini mengambil nama palet, daftar, atau kamus, Warna untuk digunakan pada tingkat yang berbeda dari variabel hue. Harus sesuatu yang dapat diinterpretasikan oleh color_palette(), atau kamus pemetaan tingkat hue ke warna matplotlib.
- ax: (opsional) Parameter ini mengambil matplotlib Axes, Objek Axes untuk menggambar plot, jika tidak menggunakan Axes saat ini.
- kwargs: Parameter ini mengambil pemetaan kunci, nilai, Argumen kata kunci lainnya yang diteruskan ke matplotlib.axes.Axes.bar().
Mengembalikan : Mengembalikan objek Axes dengan plot yang digambar padanya.
Contoh :
# import required moduleimport seaborn as snsimport numpy as np# assign datadata = np.random.randn(50, 20)# illustrate heat mapax = sns.heatmap(data, xticklabels=2, yticklabels=False)
Output :
7. Pie Chart (Diagram Lingkaran)
Diagram lingkaran adalah analisis univariat dan umumnya digunakan untuk menunjukkan data persentase atau proporsional. Distribusi persentase dari setiap kelas dalam suatu variabel diberikan di sebelah irisan lingkaran yang sesuai. Perpustakaan Python yang dapat digunakan untuk membuat diagram lingkaran adalah matplotlib dan seaborn.
Sintaks :
matplotlib.pyplot.pie(data, explode=None, labels=None, colors=None, autopct=None, shadow=False)Parameter :
- data : Mewakili larik nilai data yang akan diplot, area fraksional setiap irisan diwakili oleh data/sum(data). Jika sum(data)<1, maka nilai data mengembalikan area fraksional secara langsung, sehingga hasil diagram lingkaran akan memiliki irisan kosong sebesar 1-sum(data).
- labels : Adalah daftar urutan string yang menetapkan label setiap irisan.
- color : Atribut digunakan untuk memberikan warna pada irisan-irisan.
- autopct : Adalah string yang digunakan untuk memberi label irisan dengan nilai numerik mereka.
- shadow : Digunakan untuk membuat bayangan irisan.
Berikut adalah keuntungan dari Diagram Lingkaran :
- Ringkasan visual yang lebih mudah dari data berjumlah besar
- Efek dan ukuran kelas yang berbeda dapat dengan mudah dipahami
- Persentase digunakan untuk mewakili kelas-kelas dalam titik data
Contoh :
import matplotlib.pyplot as pltimport seaborn as sns# Creating datasetcars = ['AUDI', 'BMW', 'FORD', 'TESLA', 'JAGUAR', 'MERCEDES']data = [23, 17, 35, 29, 12, 41]# Set Seaborn stylesns.set(style="whitegrid")# Creating plot using Seabornfig, ax = plt.subplots(figsize=(10, 7))ax.pie(data, labels=cars, autopct='%1.1f%%', startangle=90, colors=sns.color_palette('pastel'), wedgeprops=dict(width=0.4))# Set plot titleplt.title('Car Distribution')# Show plotplt.show()
Output :
Contoh :
import matplotlib.pyplot as pltimport seaborn as snsimport numpy as np# Creating datasetcars = ['AUDI', 'BMW', 'FORD', 'TESLA', 'JAGUAR', 'MERCEDES']data = [23, 17, 35, 29, 12, 41]# Creating explode dataexplode = (0.1, 0.0, 0.2, 0.3, 0.0, 0.0)# Creating color parameterscolors = ("orange", "cyan", "brown", "grey", "indigo", "beige")# Wedge propertieswp = {'linewidth': 1, 'edgecolor': "green"}# Creating autocpt argumentsdef func(pct, allvalues):absolute = int(pct / 100.*np.sum(allvalues))return "{:.1f}%\n({:d} g)".format(pct, absolute)# Set Seaborn stylesns.set(style="whitegrid")# Creating plot using Matplotlibfig, ax = plt.subplots(figsize=(10, 7))wedges, texts, autotexts = ax.pie(data, autopct=lambda pct: func(pct, data), explode=explode, labels=cars,shadow=True, colors=colors, startangle=90, wedgeprops=wp,textprops=dict(color="magenta"))# Adding legendax.legend(wedges, cars, title="Cars", loc="center left",bbox_to_anchor=(1, 0, 0.5, 1))plt.setp(autotexts, size=8, weight="bold")ax.set_title("Customizing pie chart")# Show plotplt.show()
Output :
8. Bar Kesalahan (Error Bars)
Bar Kesalahan dapat didefinisikan sebagai garis melalui suatu titik pada grafik, sejajar dengan salah satu sumbu, yang mewakili ketidakpastian atau kesalahan dari koordinat yang sesuai dengan titik tersebut. Jenis plot ini sangat berguna untuk memahami dan menganalisis penyimpangan dari target. Setelah kesalahan diidentifikasi, ini dapat dengan mudah mengarah pada analisis lebih mendalam tentang faktor-faktor yang menyebabkannya.
- Penyimpangan dari titik data terhadap ambang batas dapat dengan mudah ditangkap.
- Dengan mudah menangkap penyimpangan dari sekumpulan data yang lebih besar.
- Ini menentukan data yang mendasarinya.
Contoh :
import matplotlib.pyplot as pltimport seaborn as snsimport numpy as np# Assign axesx = np.linspace(0, 5.5, 10)y = 10 * np.exp(-x)# Assign errors regarding each axisxerr = np.random.random_sample(10)yerr = np.random.random_sample(10)# Set Seaborn stylesns.set(style="whitegrid")# Adjust plotfig, ax = plt.subplots()sns.lineplot(x=x, y=y, ax=ax, marker='o', label='Line Plot')ax.errorbar(x, y, xerr=xerr, yerr=yerr, fmt='none', ecolor='red', capsize=5, label='Error Bars')# Assign labels and titleax.set_xlabel('x-axis')ax.set_ylabel('y-axis')ax.set_title('Line plot with Seaborn Error Bars')# Show legendax.legend()# Show plotplt.show()
Output :
Jika ingin melihat Artikel sebelumnya tentang Jenis-jenis Visualisasi Data menggunakan Python Matplotlib, silakan lihat di sini.
Dan, jika ingin melihat Artikel sebelumnya tentang Tutorial Library NumPy, SciPy, dan Matplotlib, silakan lihat di sini. Untuk melihat Artikel tentang Modul Pemrograman Python, silakan lihat di sini.
Terima Kasih 😄😘👌👍 :)
Wassalamu‘alaikum wr. wb.