Eksplorasi Visualisasi Data Numerik & Data Kategorik

KELOMPOK 6

Anggota kelompok :

Vina Rohamiyanti (3338240007)

Jacky Alinson (3338240008)

Rashieka Cantika Intan Rachmat (3338240028)

Rahayu Puspita Sari (3338240049)

Pendahuluan

Visualisasi data merupakan teknik penting dalam eksplorasi data untuk memahami pola, distribusi, serta hubungan antar variabel dalam suatu dataset. Melalui visualisasi, analis dapat memperoleh pemahaman awal mengenai karakteristik data sebelum melakukan analisis yang lebih lanjut.

1. Data Numerik

Pada laporan ini dilakukan eksplorasi visual terhadap dataset Pima Indians Diabetes, yang berisi informasi medis dari pasien perempuan keturunan Pima Indian. Dataset ini sering digunakan dalam penelitian untuk mempelajari faktor-faktor yang berkaitan dengan diabetes.

Tujuan dari analisis ini adalah:

  • memahami distribusi variabel kesehatan
  • membandingkan karakteristik pasien diabetes dan non-diabetes
  • mengidentifikasi hubungan antar variabel kesehatan

Visualisasi yang digunakan dalam analisis ini meliputi:

  • Histogram
  • Density Plot
  • QQ Plot
  • Boxplot
  • Scatter Plot
  • Pairplot
  • Correlation Heatmap

Visualisasi line chart tidak digunakan karena dataset ini tidak memiliki variabel waktu atau urutan observasi kronologis. Line chart umumnya digunakan untuk menggambarkan perubahan suatu variabel terhadap waktu, sedangkan dataset ini merupakan cross-sectional data yang merepresentasikan kondisi pasien pada satu waktu tertentu.


1). Persiapan Data

library(tidyverse)
library(GGally)
library(corrplot)

diabetes <- read.csv("C:/Users/rahay/OneDrive/Documents/Semester 4/Eksplorasi dan Visualisasi Data/diabetes.csv")

str(diabetes)
## 'data.frame':    768 obs. of  9 variables:
##  $ Pregnancies             : int  6 1 8 1 0 5 3 10 2 8 ...
##  $ Glucose                 : int  148 85 183 89 137 116 78 115 197 125 ...
##  $ BloodPressure           : int  72 66 64 66 40 74 50 0 70 96 ...
##  $ SkinThickness           : int  35 29 0 23 35 0 32 0 45 0 ...
##  $ Insulin                 : int  0 0 0 94 168 0 88 0 543 0 ...
##  $ BMI                     : num  33.6 26.6 23.3 28.1 43.1 25.6 31 35.3 30.5 0 ...
##  $ DiabetesPedigreeFunction: num  0.627 0.351 0.672 0.167 2.288 ...
##  $ Age                     : int  50 31 32 21 33 30 26 29 53 54 ...
##  $ Outcome                 : int  1 0 1 0 1 0 1 0 1 1 ...
summary(diabetes)
##   Pregnancies        Glucose      BloodPressure    SkinThickness  
##  Min.   : 0.000   Min.   :  0.0   Min.   :  0.00   Min.   : 0.00  
##  1st Qu.: 1.000   1st Qu.: 99.0   1st Qu.: 62.00   1st Qu.: 0.00  
##  Median : 3.000   Median :117.0   Median : 72.00   Median :23.00  
##  Mean   : 3.845   Mean   :120.9   Mean   : 69.11   Mean   :20.54  
##  3rd Qu.: 6.000   3rd Qu.:140.2   3rd Qu.: 80.00   3rd Qu.:32.00  
##  Max.   :17.000   Max.   :199.0   Max.   :122.00   Max.   :99.00  
##     Insulin           BMI        DiabetesPedigreeFunction      Age       
##  Min.   :  0.0   Min.   : 0.00   Min.   :0.0780           Min.   :21.00  
##  1st Qu.:  0.0   1st Qu.:27.30   1st Qu.:0.2437           1st Qu.:24.00  
##  Median : 30.5   Median :32.00   Median :0.3725           Median :29.00  
##  Mean   : 79.8   Mean   :31.99   Mean   :0.4719           Mean   :33.24  
##  3rd Qu.:127.2   3rd Qu.:36.60   3rd Qu.:0.6262           3rd Qu.:41.00  
##  Max.   :846.0   Max.   :67.10   Max.   :2.4200           Max.   :81.00  
##     Outcome     
##  Min.   :0.000  
##  1st Qu.:0.000  
##  Median :0.000  
##  Mean   :0.349  
##  3rd Qu.:1.000  
##  Max.   :1.000

Dataset ini memiliki beberapa variabel kesehatan seperti:

  • Pregnancies
  • Glucose
  • BloodPressure
  • SkinThickness
  • Insulin
  • BMI
  • DiabetesPedigreeFunction
  • Age
  • Outcome

Variabel Outcome menunjukkan status diabetes pasien:

  • 0 = Tidak Diabetes
  • 1 = Diabetes

2) Data Cleaning

Pada dataset ini terdapat beberapa variabel medis yang memiliki nilai 0, seperti:

  • Glucose
  • BloodPressure
  • SkinThickness
  • Insulin
  • BMI

Secara medis nilai tersebut tidak realistis dan kemungkinan besar merepresentasikan missing values. Oleh karena itu nilai 0 akan diubah menjadi NA, kemudian dilakukan imputasi menggunakan median agar jumlah data tetap terjaga.

Mengubah nilai 0 menjadi NA

cols_with_zero <- c("Glucose","BloodPressure","SkinThickness","Insulin","BMI")

diabetes[cols_with_zero] <- lapply(diabetes[cols_with_zero], function(x){
  x[x == 0] <- NA
  x
})

Imputasi Missing Value dengan Median

for(col in cols_with_zero){
  diabetes[[col]][is.na(diabetes[[col]])] <- median(diabetes[[col]], na.rm = TRUE)
}

Verifikasi Data

summary(diabetes)
##   Pregnancies        Glucose       BloodPressure    SkinThickness  
##  Min.   : 0.000   Min.   : 44.00   Min.   : 24.00   Min.   : 7.00  
##  1st Qu.: 1.000   1st Qu.: 99.75   1st Qu.: 64.00   1st Qu.:25.00  
##  Median : 3.000   Median :117.00   Median : 72.00   Median :29.00  
##  Mean   : 3.845   Mean   :121.66   Mean   : 72.39   Mean   :29.11  
##  3rd Qu.: 6.000   3rd Qu.:140.25   3rd Qu.: 80.00   3rd Qu.:32.00  
##  Max.   :17.000   Max.   :199.00   Max.   :122.00   Max.   :99.00  
##     Insulin           BMI        DiabetesPedigreeFunction      Age       
##  Min.   : 14.0   Min.   :18.20   Min.   :0.0780           Min.   :21.00  
##  1st Qu.:121.5   1st Qu.:27.50   1st Qu.:0.2437           1st Qu.:24.00  
##  Median :125.0   Median :32.30   Median :0.3725           Median :29.00  
##  Mean   :140.7   Mean   :32.46   Mean   :0.4719           Mean   :33.24  
##  3rd Qu.:127.2   3rd Qu.:36.60   3rd Qu.:0.6262           3rd Qu.:41.00  
##  Max.   :846.0   Max.   :67.10   Max.   :2.4200           Max.   :81.00  
##     Outcome     
##  Min.   :0.000  
##  1st Qu.:0.000  
##  Median :0.000  
##  Mean   :0.349  
##  3rd Qu.:1.000  
##  Max.   :1.000

Proses ini memastikan bahwa analisis selanjutnya dilakukan pada data yang lebih realistis secara medis.


3) Gambaran Umum Dataset

Distribusi Status Diabetes

ggplot(diabetes, aes(x = factor(Outcome))) +
  geom_bar(fill = "steelblue") +
  labs(
    title = "Distribusi Status Diabetes",
    x = "Status Diabetes",
    y = "Jumlah Pasien"
  ) +
  theme_minimal()

Insight

Grafik menunjukkan jumlah pasien dengan status diabetes dan non-diabetes. Visualisasi ini membantu memahami komposisi dataset dan memberikan gambaran awal mengenai keseimbangan kelas dalam data.

Berdasarkan grafik distribusi status diabetes, terlihat bahwa jumlah pasien dengan status 0 (tidak diabetes) sekitar 500 orang, sedangkan pasien dengan status 1 (diabetes) sekitar 270 orang. Hal ini menunjukkan bahwa sebagian besar pasien dalam dataset termasuk dalam kategori tidak diabetes.

Selisih jumlah yang cukup besar antara kedua kategori tersebut menunjukkan bahwa distribusi data tidak seimbang. Kondisi ini perlu diperhatikan dalam proses analisis atau pemodelan, karena perbedaan jumlah data dapat mempengaruhi kemampuan model dalam mengenali kasus diabetes secara akurat.


4) Analisis Distribusi Variabel

Histogram Distribusi Variabel

numeric_vars <- c("Glucose","BMI","Age","BloodPressure","Insulin")

for (var in numeric_vars) {
  
  p <- ggplot(diabetes, aes_string(x = var)) +
    geom_histogram(bins = 30, fill = "skyblue") +
    labs(
      title = paste("Histogram Distribusi", var),
      x = var,
      y = "Frekuensi"
    ) +
    theme_minimal()
  
  print(p)
}
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Insight Histogram Distribusi Variabel

Histogram digunakan untuk melihat bentuk distribusi variabel kesehatan. Melalui grafik ini dapat diamati apakah distribusi data bersifat simetris, miring, atau memiliki nilai ekstrem. Berdasarkan histogram yang ditampilkan di atas, dapat dilakukan interpretasi mengenai distribusi pada beberapa variabel berikut.

  1. Distribusi Glukosa Histogram distribusi glukosa menunjukkan bahwa sebagian besar nilai glukosa berada pada kisaran sekitar 90 hingga 140. Frekuensi tertinggi terlihat di sekitar 100–120, yang menandakan banyak pasien memiliki kadar glukosa pada rentang tersebut. Selain itu, terdapat beberapa nilai glukosa yang lebih tinggi hingga mendekati 200, meskipun jumlahnya lebih sedikit. Hal ini menunjukkan adanya variasi kadar glukosa antar pasien.

  2. Distribusi BMI Histogram distribusi BMI menunjukkan bahwa sebagian besar nilai BMI berada pada kisaran sekitar 25 hingga 35. Frekuensi tertinggi terlihat di sekitar 30–33, yang menunjukkan banyak pasien memiliki BMI pada rentang tersebut. Selain itu, terdapat beberapa nilai BMI yang lebih tinggi hingga di atas 40, namun jumlahnya relatif sedikit.

  3. Distribusi Usia (Age) Histogram distribusi usia menunjukkan bahwa sebagian besar pasien berada pada rentang usia sekitar 20 hingga 40 tahun. Frekuensi tertinggi terlihat pada usia awal 20-an. Seiring bertambahnya usia, jumlah pasien dalam dataset cenderung menurun. Meskipun demikian, masih terdapat beberapa pasien dengan usia sekitar 50 hingga 70 tahun, meskipun jumlahnya lebih sedikit.

  4. Distribusi Tekanan Darah (BloodPressure) Histogram distribusi tekanan darah menunjukkan bahwa sebagian besar nilai berada pada kisaran sekitar 60 hingga 80. Frekuensi tertinggi terlihat pada nilai sekitar 70. Terdapat beberapa nilai yang lebih rendah dari 50 maupun lebih tinggi hingga sekitar 90–100, tetapi jumlahnya relatif sedikit dibandingkan nilai pada kisaran tengah.

  5. Distribusi Insulin (Insulin) Histogram distribusi insulin menunjukkan bahwa sebagian besar nilai insulin berada pada kisaran sekitar 100 hingga 200. Namun distribusi data terlihat miring ke kanan, karena terdapat beberapa nilai insulin yang sangat tinggi hingga sekitar 300 sampai lebih dari 800, meskipun jumlahnya relatif sedikit.

Secara keseluruhan, histogram menunjukkan bahwa setiap variabel memiliki pola distribusi yang berbeda, sehingga perlu dianalisis lebih lanjut untuk memahami hubungannya dengan kondisi diabetes.


Density Plot

for (var in numeric_vars) {
  
  p <- ggplot(diabetes, aes_string(x = var)) +
    geom_density(fill = "lightgreen", alpha = 0.7) +
    labs(
      title = paste("Density Plot", var),
      x = var,
      y = "Density"
    ) +
    theme_minimal()
  
  print(p)
}

Insight Distribusi Variabel (Density Plot)

Density plot memberikan gambaran distribusi yang lebih halus dibandingkan histogram dan membantu memahami bentuk distribusi data secara lebih jelas. Melalui grafik ini dapat dilihat kecenderungan sebaran data, apakah distribusi bersifat simetris, miring, atau memiliki nilai ekstrem. Berdasarkan density plot yang ditampilkan, dapat dilakukan interpretasi distribusi pada beberapa variabel berikut.

  1. Distribusi Glucose Berdasarkan grafik density plot, nilai glukosa paling banyak berada di sekitar 90 sampai 120. Puncak kurva terlihat di sekitar 100–110, yang menunjukkan bahwa nilai tersebut merupakan yang paling sering muncul pada data pasien.

Setelah nilai tersebut, kurva mulai menurun ke arah kanan, artinya jumlah data dengan kadar glukosa yang lebih tinggi semakin sedikit. Meskipun begitu, masih ada beberapa nilai glukosa yang cukup tinggi hingga mendekati 200, tetapi jumlahnya tidak banyak.

Sementara itu, nilai glukosa yang rendah (sekitar 50–70) juga terlihat lebih sedikit dibandingkan nilai di bagian tengah. Secara umum, grafik ini menunjukkan bahwa sebagian besar data terkumpul pada nilai glukosa menengah, dan hanya sebagian kecil yang memiliki nilai sangat tinggi.

  1. Distribusi BMI (Body Mass Index) Berdasarkan density plot pada variabel BMI, terlihat bahwa sebagian besar nilai BMI berada pada kisaran sekitar 28 hingga 38. Kurva mencapai puncak kepadatan di sekitar 32, yang menunjukkan bahwa nilai tersebut merupakan BMI yang paling sering muncul pada data pasien.

Bentuk kurva distribusi terlihat miring ke kanan (right-skewed). Hal ini ditunjukkan oleh ekor kurva yang memanjang ke arah nilai BMI yang lebih tinggi hingga sekitar 60, yang berarti terdapat beberapa pasien dengan BMI sangat tinggi, namun jumlahnya relatif sedikit dibandingkan nilai di sekitar puncak distribusi.

Sementara itu, nilai BMI yang lebih rendah, yaitu sekitar di bawah 22, terlihat jarang muncul dalam dataset. Secara keseluruhan, grafik ini menunjukkan bahwa sebagian besar data BMI terkonsentrasi di kisaran 30-an, dengan sebagian kecil nilai yang sangat tinggi.

  1. Distribusi Usia (Age) Berdasarkan density plot pada variabel Age, terlihat bahwa distribusi usia paling banyak berada pada kisaran awal 20-an hingga sekitar 30 tahun. Puncak kepadatan grafik terlihat di sekitar usia 22–24 tahun, yang menunjukkan bahwa usia tersebut merupakan yang paling sering muncul dalam dataset.

Setelah melewati usia sekitar 25 tahun, kepadatan grafik mulai menurun secara bertahap, menunjukkan bahwa jumlah individu dengan usia lebih tua semakin sedikit dibandingkan kelompok usia muda.

Selain itu, kurva terlihat memanjang ke arah kanan hingga sekitar usia 80 tahun, menandakan adanya beberapa individu dengan usia lebih tinggi, tetapi jumlahnya relatif sedikit.

  1. Distribusi Tekanan Darah (BloodPressure) Density plot pada variabel BloodPressure menunjukkan bahwa sebagian besar nilai tekanan darah berada pada kisaran sekitar 60 hingga 85. Puncak kepadatan terlihat di sekitar 70–75, yang menandakan bahwa nilai tersebut merupakan kisaran tekanan darah yang paling sering muncul pada data pasien.

Bentuk kurvanya terlihat mendekati distribusi normal, meskipun sedikit miring ke kanan. Hal ini menunjukkan bahwa terdapat beberapa pasien yang memiliki tekanan darah lebih tinggi hingga sekitar 100, tetapi jumlahnya tidak terlalu banyak.

Nilai tekanan darah yang sangat rendah (di bawah 50) juga terlihat jarang muncul dalam dataset.

  1. Distribusi Insulin (Insulin) Density plot pada variabel Insulin menunjukkan bahwa sebagian besar nilai insulin berada pada kisaran sekitar 100 hingga 150. Puncak kepadatan terlihat di sekitar 120–130, yang menandakan bahwa nilai tersebut merupakan nilai insulin yang paling sering muncul pada data pasien.

Distribusi insulin terlihat sangat miring ke kanan (right-skewed). Hal ini terlihat dari ekor kurva yang memanjang hingga nilai yang cukup tinggi, bahkan mencapai lebih dari 800. Kondisi ini menunjukkan bahwa terdapat beberapa pasien dengan kadar insulin sangat tinggi, namun jumlahnya relatif sedikit dibandingkan nilai di kisaran tengah.

Secara keseluruhan, grafik ini menunjukkan bahwa sebagian besar pasien memiliki kadar insulin pada kisaran menengah, sementara hanya sebagian kecil yang memiliki nilai sangat tinggi.

Secara umum, density plot menunjukkan bahwa sebagian besar variabel memiliki distribusi yang cenderung miring ke kanan, yang menandakan adanya beberapa nilai tinggi yang muncul pada sebagian kecil data. Pola distribusi ini penting diperhatikan dalam analisis lebih lanjut terkait faktor-faktor yang berhubungan dengan diabetes.


QQ Plot

for (var in numeric_vars) {
  
  p <- ggplot(diabetes, aes_string(sample = var)) +
    stat_qq() +
    stat_qq_line() +
    labs(title = paste("QQ Plot", var)) +
    theme_minimal()
  
  print(p)
}

Insight QQ Plot Variabel

QQ plot digunakan untuk mengevaluasi apakah distribusi data mendekati distribusi normal. Penyimpangan dari garis diagonal menunjukkan bahwa distribusi variabel mungkin tidak sepenuhnya normal. Berdasarkan QQ plot yang ditampilkan, dapat dilakukan interpretasi pada beberapa variabel berikut.

  1. QQ Plot Glucose QQ plot pada variabel glucose menunjukkan bahwa sebagian besar titik data berada cukup dekat dengan garis diagonal pada bagian tengah grafik. Hal ini menunjukkan bahwa nilai glucose pada kisaran sekitar 90–150 relatif mengikuti distribusi normal.

Namun pada bagian kiri grafik, terlihat beberapa titik berada di bawah garis diagonal dengan nilai sekitar 40–70. Hal ini menunjukkan adanya beberapa data dengan kadar glucose yang lebih rendah dari pola distribusi normal.

Pada bagian kanan grafik, titik-titik mulai menyimpang ke atas dari garis, terutama pada nilai sekitar 180–200. Penyimpangan ini menunjukkan adanya beberapa data dengan kadar glucose yang lebih tinggi dari yang diharapkan jika data benar-benar berdistribusi normal.

Secara keseluruhan, distribusi glucose tidak sepenuhnya normal, meskipun sebagian besar data pada bagian tengah masih cukup mendekati distribusi normal.

  1. QQ Plot BMI

QQ plot pada variabel BMI menunjukkan bahwa sebagian besar titik data mengikuti garis diagonal pada bagian tengah grafik, terutama pada kisaran nilai 25–40. Hal ini menunjukkan bahwa pada kisaran tersebut distribusi BMI cukup mendekati distribusi normal.

Pada bagian kiri grafik, terdapat beberapa titik dengan nilai sekitar 18–22 yang berada sedikit di bawah garis diagonal. Hal ini menunjukkan adanya nilai BMI yang lebih rendah dibandingkan pola distribusi normal.

Sementara itu pada bagian kanan grafik, terlihat penyimpangan yang lebih jelas. Beberapa titik berada di atas garis diagonal dengan nilai sekitar 50–65, yang menunjukkan adanya beberapa individu dengan nilai BMI yang cukup tinggi.

Secara keseluruhan, distribusi BMI tidak sepenuhnya normal, karena terdapat penyimpangan terutama pada nilai yang lebih tinggi.

  1. QQ Plot Age

QQ plot pada variabel Age menunjukkan bahwa sebagian besar titik data mengikuti garis diagonal pada bagian tengah grafik, terutama pada kisaran usia sekitar 35–50 tahun. Hal ini menunjukkan bahwa pada kisaran tersebut distribusi usia cukup mendekati distribusi normal.

Pada bagian kiri grafik, terdapat beberapa titik dengan usia sekitar 20–25 tahun yang berada di bawah garis diagonal. Hal ini menunjukkan adanya beberapa nilai usia yang lebih rendah dari pola distribusi normal.

Pada bagian kanan grafik, terlihat beberapa titik dengan usia sekitar 60–75 tahun yang berada di atas garis diagonal. Hal ini menunjukkan adanya beberapa nilai usia yang lebih tinggi dibandingkan pola distribusi normal.

Secara keseluruhan, distribusi Age tidak sepenuhnya normal, karena terdapat penyimpangan pada bagian usia rendah maupun usia tinggi.

  1. QQ Plot BloodPressure

QQ plot pada variabel BloodPressure menunjukkan bahwa sebagian besar titik data mengikuti garis diagonal pada bagian tengah grafik, terutama pada kisaran 60–90 mmHg. Hal ini menunjukkan bahwa pada kisaran tersebut distribusi tekanan darah cukup mendekati distribusi normal.

Pada bagian kiri grafik, terdapat beberapa titik dengan nilai sekitar 25–40 mmHg yang berada di bawah garis diagonal. Hal ini menunjukkan adanya beberapa nilai tekanan darah yang lebih rendah dari pola distribusi normal.

Pada bagian kanan grafik, terlihat beberapa titik dengan nilai sekitar 100–120 mmHg yang berada di atas garis diagonal. Hal ini menunjukkan adanya beberapa nilai tekanan darah yang lebih tinggi.

Secara keseluruhan, distribusi BloodPressure tidak sepenuhnya normal, meskipun sebagian besar data pada kisaran 60–90 mmHg masih mengikuti pola distribusi normal.

  1. QQ Plot Insulin

QQ plot pada variabel Insulin menunjukkan bahwa hanya sebagian kecil titik yang mengikuti garis diagonal, terutama pada kisaran nilai sekitar 120–200. Hal ini menunjukkan bahwa pada kisaran tersebut distribusi insulin masih sedikit mendekati distribusi normal.

Namun pada bagian kiri grafik, terdapat beberapa titik dengan nilai sekitar 10–50 yang berada di bawah garis diagonal. Hal ini menunjukkan adanya nilai insulin yang lebih rendah dari pola distribusi normal.

Pada bagian kanan grafik, terlihat penyimpangan yang sangat jelas. Banyak titik berada jauh di atas garis diagonal dengan nilai sekitar 300 hingga 850. Hal ini menunjukkan adanya beberapa nilai insulin yang sangat tinggi dibandingkan sebagian besar data lainnya.

Secara keseluruhan, distribusi Insulin tidak berdistribusi normal, karena terdapat penyimpangan yang cukup besar terutama pada nilai yang tinggi.

Secara umum, hasil QQ plot menunjukkan bahwa sebagian besar variabel tidak sepenuhnya mengikuti distribusi normal. Beberapa variabel masih mendekati distribusi normal pada bagian tengah data, namun terdapat penyimpangan pada nilai yang sangat rendah maupun sangat tinggi. Kondisi ini menunjukkan adanya variasi data yang perlu diperhatikan dalam analisis selanjutnya.


5) Perbandingan Pasien Diabetes dan Non-Diabetes

box_vars <- c("Glucose","BMI","Age","BloodPressure")

for (var in box_vars) {
  
  p <- ggplot(diabetes, aes_string(x = "factor(Outcome)", y = var)) +
    geom_boxplot(fill = "orange") +
    labs(
      title = paste("Perbandingan", var, "berdasarkan Status Diabetes"),
      x = "Outcome",
      y = var
    ) +
    theme_minimal()
  
  print(p)
}

Insight Boxplot Variabel

Boxplot memungkinkan perbandingan distribusi variabel kesehatan antara pasien diabetes dan non-diabetes. Variabel dengan median yang lebih tinggi pada kelompok diabetes dapat menjadi indikator faktor risiko yang berpotensi berkaitan dengan kondisi tersebut. Berdasarkan boxplot yang ditampilkan, dapat dilakukan interpretasi pada beberapa variabel berikut.

  1. Perbandingan Glucose berdasarkan Status Diabetes

Berdasarkan boxplot, kelompok Outcome = 1 (diabetes) memiliki nilai glucose yang lebih tinggi dibandingkan kelompok Outcome = 0 (tidak diabetes). Median glucose pada kelompok non-diabetes berada sekitar 105–110, dengan sebagian besar data berada pada kisaran 95–125. Namun, terdapat beberapa outlier dengan nilai yang cukup tinggi sekitar 170–200.

Sementara itu, pada kelompok diabetes, median glucose berada sekitar 135–140 dengan rentang utama sekitar 120–165. Nilai ini terlihat lebih tinggi dibandingkan kelompok non-diabetes. Hal ini menunjukkan bahwa individu dengan diabetes cenderung memiliki kadar glucose yang lebih tinggi.

  1. Perbandingan BMI berdasarkan Status Diabetes

Boxplot menunjukkan bahwa kelompok diabetes memiliki nilai BMI yang sedikit lebih tinggi dibandingkan kelompok non-diabetes. Median BMI pada kelompok non-diabetes berada sekitar 30 dengan sebagian besar data berada pada kisaran 26–34. Selain itu, terdapat beberapa outlier dengan nilai BMI sekitar 52–57.

Pada kelompok diabetes, median BMI berada sekitar 34–35 dengan rentang utama sekitar 31–38. Terdapat pula beberapa outlier dengan nilai BMI yang cukup tinggi sekitar 53–66. Hal ini menunjukkan bahwa individu dengan diabetes cenderung memiliki BMI yang lebih tinggi.

  1. Perbandingan Age berdasarkan Status Diabetes

Dari boxplot terlihat bahwa kelompok diabetes memiliki usia yang cenderung lebih tinggi dibandingkan kelompok non-diabetes. Median usia pada kelompok non-diabetes berada sekitar 27–28 tahun dengan sebagian besar data berada pada kisaran 23–35 tahun. Terdapat beberapa outlier dengan usia sekitar 60–80 tahun.

Sementara itu, pada kelompok diabetes median usia berada sekitar 35–36 tahun dengan rentang utama sekitar 30–45 tahun. Selain itu, terdapat beberapa nilai usia yang cukup tinggi hingga sekitar 70 tahun. Hal ini menunjukkan bahwa individu dengan diabetes cenderung memiliki usia yang lebih tinggi.

  1. Perbandingan BloodPressure berdasarkan Status Diabetes

Boxplot juga menunjukkan bahwa kelompok diabetes memiliki tekanan darah yang sedikit lebih tinggi dibandingkan kelompok non-diabetes. Median tekanan darah pada kelompok non-diabetes berada sekitar 70 mmHg dengan sebagian besar data berada pada kisaran 65–75 mmHg. Terdapat beberapa outlier dengan nilai rendah sekitar 30–40 mmHg serta nilai tinggi sekitar 100–120 mmHg.

Pada kelompok diabetes, median tekanan darah berada sekitar 72–74 mmHg dengan rentang utama sekitar 68–80 mmHg. Selain itu, terdapat beberapa outlier sekitar 30–40 mmHg dan 105–110 mmHg. Hal ini menunjukkan bahwa individu dengan diabetes cenderung memiliki tekanan darah yang sedikit lebih tinggi.

Secara keseluruhan, boxplot menunjukkan bahwa variabel seperti Glucose, BMI, Age, dan BloodPressure memiliki nilai median yang lebih tinggi pada kelompok pasien diabetes dibandingkan kelompok non-diabetes. Hal ini mengindikasikan bahwa variabel-variabel tersebut kemungkinan memiliki hubungan dengan kondisi diabetes dan dapat menjadi faktor yang perlu diperhatikan dalam analisis lebih lanjut.


6) Hubungan Antar Variabel

ggplot(diabetes, aes(x = BMI, y = Glucose)) +
  geom_point(alpha = 0.6) +
  labs(title = "Hubungan BMI dan Glucose") +
  theme_minimal()

ggplot(diabetes, aes(x = Age, y = BMI)) +
  geom_point(alpha = 0.6) +
  labs(title = "Hubungan Age dan BMI") +
  theme_minimal()

ggplot(diabetes, aes(x = Age, y = Glucose)) +
  geom_point(alpha = 0.6) +
  labs(title = "Hubungan Age dan Glucose") +
  theme_minimal()

Insight Scatter Plot

Scatter plot digunakan untuk mengamati hubungan antara dua variabel numerik. Melalui pola sebaran titik pada grafik, dapat terlihat kecenderungan hubungan antara faktor-faktor kesehatan yang dianalisis.

  1. Hubungan BMI dan Glucose

Scatter plot menunjukkan adanya kecenderungan hubungan positif yang lemah antara BMI dan glucose. Sebagian besar data berada pada BMI sekitar 25–40 dengan nilai glucose sekitar 90–150. Selain itu, terdapat beberapa nilai glucose yang cukup tinggi hingga sekitar 180–200 pada BMI sekitar 30–40. Hal ini menunjukkan bahwa ketika BMI meningkat, nilai glucose cenderung ikut meningkat, meskipun hubungan tersebut tidak terlalu kuat.

  1. Hubungan Age dan BMI

Scatter plot menunjukkan bahwa hubungan antara age dan BMI tidak terlalu kuat. Sebagian besar data berada pada usia sekitar 20–40 tahun dengan BMI sekitar 25–35. Pada usia yang lebih tinggi, sekitar 50–70 tahun, nilai BMI masih berada pada kisaran 25–35. Oleh karena itu, tidak terlihat pola peningkatan BMI yang jelas seiring bertambahnya usia.

  1. Hubungan Age dan Glucose

Scatter plot menunjukkan adanya kecenderungan hubungan positif yang lemah antara age dan glucose. Sebagian besar data berada pada usia sekitar 20–45 tahun dengan nilai glucose sekitar 90–150. Pada usia yang lebih tinggi, sekitar 50–70 tahun, terdapat beberapa nilai glucose yang cukup tinggi hingga sekitar 180–200. Hal ini menunjukkan bahwa nilai glucose cenderung meningkat pada usia yang lebih tua, meskipun hubungan yang terlihat tidak terlalu kuat.


7) Eksplorasi Multivariat

GGally::ggpairs(
  diabetes[, c("Glucose","BMI","Age","BloodPressure","Outcome")]
)

Insight Pairplot

Pairplot memungkinkan pengamatan hubungan antar beberapa variabel secara simultan dan membantu mengidentifikasi pola hubungan atau cluster antara pasien diabetes dan non-diabetes.

Berdasarkan nilai korelasi pada grafik:

  1. Glucose dan Outcome memiliki nilai korelasi 0.493, yang menunjukkan hubungan positif sedang. Artinya, semakin tinggi nilai glucose, maka kemungkinan seseorang mengalami diabetes juga cenderung meningkat.

  2. BMI dan Outcome memiliki nilai korelasi 0.312, yang menunjukkan hubungan positif lemah hingga sedang. Hal ini berarti individu dengan BMI yang lebih tinggi cenderung memiliki risiko diabetes yang lebih besar.

  3. Age dan Outcome memiliki nilai korelasi 0.238, yang menunjukkan hubungan positif lemah. Artinya, usia yang lebih tinggi sedikit berkaitan dengan kemungkinan terjadinya diabetes.

  4. BloodPressure dan Outcome memiliki nilai korelasi 0.166, yang menunjukkan hubungan positif sangat lemah dengan status diabetes.

  5. Hubungan antar variabel lainnya menunjukkan bahwa Age dan BloodPressure memiliki korelasi 0.325, yang berarti terdapat hubungan positif lemah hingga sedang, di mana tekanan darah cenderung meningkat seiring bertambahnya usia.

  6. BMI dan BloodPressure memiliki korelasi 0.281, yang menunjukkan hubungan positif lemah.

  7. Glucose dan Age memiliki korelasi 0.267, serta Glucose dan BMI sebesar 0.231, yang keduanya menunjukkan hubungan positif lemah.

  8. BMI dan Age memiliki korelasi 0.026, yang menunjukkan bahwa hampir tidak terdapat hubungan antara BMI dan usia.

Kesimpulan: Secara keseluruhan, variabel yang memiliki hubungan paling kuat dengan Outcome (diabetes) adalah Glucose dengan nilai korelasi 0.493, dibandingkan variabel lainnya. Hal ini menunjukkan bahwa kadar glucose merupakan salah satu faktor yang paling berpengaruh terhadap kemungkinan terjadinya diabetes dalam dataset ini.


8) Analisis Korelasi

cor_matrix <- cor(diabetes)

corrplot(
  cor_matrix,
  method = "color",
  type = "upper",
  tl.cex = 0.8
)

Insight Heatmap Korelasi

Heatmap korelasi menunjukkan kekuatan hubungan antar variabel numerik. Variabel dengan korelasi yang lebih tinggi terhadap Outcome dapat dianggap memiliki hubungan yang lebih kuat dengan kondisi diabetes.

Berdasarkan heatmap korelasi, terlihat bahwa sebagian besar variabel memiliki hubungan positif dengan Outcome (diabetes), namun dengan tingkat kekuatan yang berbeda.

Variabel yang memiliki hubungan paling kuat dengan Outcome adalah Glucose, yang terlihat dari warna yang lebih gelap dibandingkan variabel lainnya. Hal ini menunjukkan bahwa semakin tinggi nilai glucose, maka kecenderungan seseorang mengalami diabetes juga semakin meningkat.

Selain itu, BMI, Age, dan Pregnancies juga menunjukkan hubungan positif dengan Outcome, meskipun kekuatannya tidak sekuat glucose. Artinya, nilai BMI yang lebih tinggi, usia yang lebih tua, serta jumlah kehamilan yang lebih banyak cenderung berkaitan dengan meningkatnya kemungkinan diabetes.

Sementara itu, BloodPressure, SkinThickness, Insulin, dan DiabetesPedigreeFunction menunjukkan hubungan yang lebih lemah dengan Outcome karena warna pada heatmap terlihat lebih terang.

Secara keseluruhan, heatmap menunjukkan bahwa Glucose memiliki hubungan paling kuat dengan status diabetes, yang menunjukkan bahwa kadar glukosa merupakan indikator utama dalam mengidentifikasi kemungkinan diabetes pada pasien dalam dataset ini.


9) Kesimpulan

Berdasarkan eksplorasi visual yang dilakukan, dapat disimpulkan beberapa hal penting:

  1. Beberapa variabel kesehatan menunjukkan distribusi yang tidak sepenuhnya normal.
  2. Pasien dengan diabetes cenderung memiliki nilai Glucose dan BMI yang lebih tinggi dibandingkan pasien non-diabetes.
  3. Hubungan antara beberapa variabel kesehatan menunjukkan pola yang dapat berkaitan dengan risiko diabetes.
  4. Analisis korelasi menunjukkan bahwa beberapa variabel memiliki hubungan yang lebih kuat dengan status diabetes dibandingkan variabel lainnya.

Secara keseluruhan, visualisasi data membantu memahami pola dasar dalam dataset serta memberikan wawasan awal mengenai faktor-faktor kesehatan yang mungkin berkaitan dengan kondisi diabetes.


2. Data Kategorik

Data yang digunakan dalam analisis ini berasal dari file shapefile (SHP) wilayah Kota Tangerang. Shapefile merupakan format data spasial yang umum digunakan dalam Sistem Informasi Geografis (SIG) untuk menyimpan informasi bentuk dan lokasi suatu wilayah.

Data shapefile tersebut berisi informasi batas wilayah administrasi desa atau kelurahan di Kota Tangerang yang digunakan untuk visualisasi peta spasial menggunakan package {sf} dan {ggplot2}.

Selain itu, analisis ini juga menggunakan data jumlah penderita diabetes melitus per kecamatan di Kota Tangerang yang diperoleh dari file Excel. Data tersebut digunakan untuk melihat distribusi jumlah kasus diabetes melitus pada setiap kecamatan serta untuk membuat berbagai visualisasi data seperti bar chart, pie chart, dan peta tematik.

1) Persiapan Data

library(ggplot2)
library(sf)
## Warning: package 'sf' was built under R version 4.4.3
## Linking to GEOS 3.13.0, GDAL 3.10.1, PROJ 9.5.1; sf_use_s2() is TRUE
library(dplyr)
library(readxl)

Membaca shapefile

# Pastikan semua file (.shp, .dbf, .shx, .prj) berada di folder yang sama dengan file .Rmd ini
getwd()
## [1] "C:/Users/rahay/OneDrive/Documents/Semester 4/Eksplorasi dan Visualisasi Data"
list.files()
##  [1] "[LapakGIS.com] KAB. TANGERANG.zip"                                                                              
##  [2] "[LapakGIS.com] KOTA TANGERANG.zip"                                                                              
##  [3] "administrasi_desa_25k.xlsx"                                                                                     
##  [4] "administrasi_desa_25k_spasial.xlsx"                                                                             
##  [5] "ADMINISTRASI_LN_25K.shp"                                                                                        
##  [6] "ADMINISTRASIDESA_AR_25K.prj"                                                                                    
##  [7] "ADMINISTRASIDESA_AR_25K.sbn"                                                                                    
##  [8] "ADMINISTRASIDESA_AR_25K.sbx"                                                                                    
##  [9] "ADMINISTRASIDESA_AR_25K.shp"                                                                                    
## [10] "ADMINISTRASIDESA_AR_25K.shp.xml"                                                                                
## [11] "ADMINISTRASIDESA_AR_25K.shx"                                                                                    
## [12] "Data Diabetes EVD.xlsx"                                                                                         
## [13] "Data_jumlah-penderita-diabetes-melitus.xls"                                                                     
## [14] "Data_jumlah-penderita-diabetes-melitus.xlsx"                                                                    
## [15] "diabetes.csv"                                                                                                   
## [16] "EDV-NUMERIK-KATEGORIK.pdf"                                                                                      
## [17] "EDV-NUMERIK-KATEGORIK_files"                                                                                    
## [18] "EDV NUMERIK KATEGORIK.Rmd"                                                                                      
## [19] "Eksplorasi-Visualisasi-Data-Numerik---Kategorik.html"                                                           
## [20] "Eksplorasi-Visualisasi-Data-Numerik---Kategorik_files"                                                          
## [21] "Eksplorasi-Visualisasi-Data-Numerik-dan-Kategorik.html"                                                         
## [22] "Eksplorasi-Visualisasi-Data-Numerik-dan-Kategorik.Rmd"                                                          
## [23] "Eksplorasi-Visualisasi-Data-Numerik-dan-Kategorik_files"                                                        
## [24] "Eksplorasi Visualisasi Data Numerik & Kategorik.Rmd"                                                            
## [25] "Eksplorasi Visualisasi Data Numerik dan Kategorik.Rmd"                                                          
## [26] "EVD-Data-Numerik-dan-Data-Kategorik.html"                                                                       
## [27] "EVD-Data-Numerik-dan-Data-Kategorik_files"                                                                      
## [28] "EVD - Tangerang"                                                                                                
## [29] "EVD Data Numerik dan Data Kategorik.Rmd"                                                                        
## [30] "evd.html"                                                                                                       
## [31] "evd.Rmd"                                                                                                        
## [32] "evd_files"                                                                                                      
## [33] "Jumlah Rumah Sakit Umum, Rumah Sakit Khusus, dan Puskesmas Menurut Kecamatan di Kabupaten Pandeglang, 2023.xlsx"
## [34] "rsconnect"                                                                                                      
## [35] "SHP-TANGERANG"                                                                                                  
## [36] "SHP-TANGERANG1"                                                                                                 
## [37] "SHP Tanggerang"                                                                                                 
## [38] "SHP_TANGGERANG"
shp_tang<-st_read("ADMINISTRASIDESA_AR_25K.shp")
## Reading layer `ADMINISTRASIDESA_AR_25K' from data source 
##   `C:\Users\rahay\OneDrive\Documents\Semester 4\Eksplorasi dan Visualisasi Data\ADMINISTRASIDESA_AR_25K.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 385 features and 0 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: 105.0998 ymin: -7.016253 xmax: 106.1802 ymax: -6.221552
## Geodetic CRS:  WGS 84
data_tang<-read_excel("Data_jumlah-penderita-diabetes-melitus.xlsx")
## New names:
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
# Menampilkan 6 data teratas
DT::datatable(data_tang)
head(data_tang)
## # A tibble: 6 × 17
##   No    Uraian Tahun  ...4  ...5  ...6  ...7  ...8  ...9 ...10 ...11 ...12 ...13
##   <chr> <chr>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 <NA>  <NA>    2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025
## 2 76.1      T…     0     0     0     0     0  2695  5775  7449  8181  3407  2536
## 3 76.2      J…     0     0     0     0     0  3504  4713  4867  5069  2231  1892
## 4 76.3      B…     0     0     0     0     0  1175  2972  4300  4167  1386  1462
## 5 76.4      B…     0     0     0     0     0  4544  3705  3880  5467  1765  1358
## 6 76.5      C…     0     0     0     0     0  3549  9880 10233 10793  4763  3703
## # ℹ 4 more variables: Satuan <chr>, `Sumber Data` <chr>, Akses <chr>,
## #   `Waktu Release` <lgl>
str(data_tang)
## tibble [14 × 17] (S3: tbl_df/tbl/data.frame)
##  $ No           : chr [1:14] NA "76.1" "76.2" "76.3" ...
##  $ Uraian       : chr [1:14] NA "    Tangerang" "    Jatiuwung" "    Batuceper" ...
##  $ Tahun        : num [1:14] 2015 0 0 0 0 ...
##  $ ...4         : num [1:14] 2016 0 0 0 0 ...
##  $ ...5         : num [1:14] 2017 0 0 0 0 ...
##  $ ...6         : num [1:14] 2018 0 0 0 0 ...
##  $ ...7         : num [1:14] 2019 0 0 0 0 ...
##  $ ...8         : num [1:14] 2020 2695 3504 1175 4544 ...
##  $ ...9         : num [1:14] 2021 5775 4713 2972 3705 ...
##  $ ...10        : num [1:14] 2022 7449 4867 4300 3880 ...
##  $ ...11        : num [1:14] 2023 8181 5069 4167 5467 ...
##  $ ...12        : num [1:14] 2024 3407 2231 1386 1765 ...
##  $ ...13        : num [1:14] 2025 2536 1892 1462 1358 ...
##  $ Satuan       : chr [1:14] NA "Orang" "Orang" "Orang" ...
##  $ Sumber Data  : chr [1:14] NA "Pencegahan dan Pengendalian Penyakit" "Pencegahan dan Pengendalian Penyakit" "Pencegahan dan Pengendalian Penyakit" ...
##  $ Akses        : chr [1:14] NA "Terbuka" "Terbuka" "Terbuka" ...
##  $ Waktu Release: logi [1:14] NA NA NA NA NA NA ...

2) Bar Chart

Bar chart merupakan salah satu jenis grafik yang digunakan untuk menampilkan perbandingan jumlah atau frekuensi dari beberapa kategori dalam bentuk batang. Grafik ini memudahkan pembaca dalam melihat perbedaan nilai antar kategori secara visual.

Pada kasus ini ditampilkan bar chart yang menunjukkan jumlah penderita diabetes melitus berdasarkan kecamatan di Kota Tangerang. Data yang digunakan berasal dari file Excel yang berisi informasi jumlah kasus diabetes melitus pada setiap kecamatan dalam rentang tahun 2015-2024.

Visualisasi ini bertujuan untuk memberikan gambaran mengenai kecamatan dengan jumlah kasus diabetes melitus yang relatif tinggi maupun rendah di Kota Tangerang.

Hasil visualisasi ditunjukkan pada grafik berikut. Fungsi pivot_longer() digunakan agar data lebih mudah digunakan untuk analisis dan pembuatan grafik.

library(dplyr)
library(tidyr)
library(ggplot2)

data_tang_clean <- data_tang %>%
  rename(
    `2015` = ...4,
    `2016` = ...5,
    `2017` = ...6,
    `2018` = ...7,
    `2019` = ...8,
    `2020` = ...9,
    `2021` = ...10,
    `2022` = ...11,
    `2023` = ...12,
    `2024` = ...13
  ) %>%
  filter(!is.na(Uraian), Uraian != "") %>%
  pivot_longer(
    cols = `2015`:`2024`,
    names_to = "Tahun_Data",       
    values_to = "Jumlah_Kasus"
  )

# Plot per kecamatan (total semua tahun)
data_tang_clean %>%
  group_by(Uraian) %>%
  summarise(Total = sum(Jumlah_Kasus, na.rm = TRUE)) %>%
  ggplot(aes(x = reorder(Uraian, Total), y = Total)) +
  geom_bar(stat = "identity", fill = "skyblue") +
  coord_flip() +
  labs(
    title = "Total Kasus Diabetes Melitus per Kecamatan",
    subtitle = "Kota Tangerang, 2015–2024",
    x = "Kecamatan",
    y = "Total Kasus"
  ) +
  theme_minimal()

Secara default, geom_bar() menggunakan stat = "count", yang berarti fungsi ini akan menghitung jumlah observasi (frekuensi) untuk setiap kategori dari variabel yang ditampilkan pada sumbu x, kemudian menampilkannya sebagai tinggi batang pada grafik.

Namun pada contoh ini digunakan parameter stat = "identity", karena data yang digunakan sudah memiliki nilai jumlah penderita diabetes melitus pada setiap kecamatan yang berasal dari data Excel. Dengan menggunakan stat = "identity", ggplot2 tidak lagi menghitung frekuensi secara otomatis, melainkan langsung menggunakan nilai yang sudah tersedia dalam data sebagai tinggi batang pada grafik.

Dengan demikian, tinggi batang pada bar chart secara langsung merepresentasikan jumlah penderita diabetes melitus pada masing-masing kecamatan di Kota Tangerang.

Interpretasi

Berdasarkan grafik Total Kasus Diabetes Melitus per Kecamatan di Kota Tangerang tahun 2015–2024, terlihat adanya perbedaan jumlah kasus yang cukup jelas antar kecamatan.

Kecamatan dengan total kasus paling tinggi adalah Cipondoh, dengan jumlah sekitar 43.000 kasus selama periode 2015–2024. Hal ini menunjukkan bahwa Cipondoh menjadi wilayah dengan akumulasi penderita diabetes melitus terbesar dibandingkan kecamatan lainnya pada periode tersebut.

Di posisi kedua terdapat Ciledug dengan jumlah sekitar 42.000 kasus. Jumlah ini hanya sedikit lebih rendah dibandingkan Cipondoh, sehingga dapat dikatakan bahwa kedua kecamatan tersebut memiliki tingkat kasus yang relatif tinggi dan hampir sama.

Selanjutnya Karawaci menempati posisi ketiga dengan total sekitar 41.000 kasus, diikuti oleh Pinang dengan sekitar 40.000 kasus. Keempat kecamatan ini memiliki jumlah kasus yang cukup besar dan terlihat menonjol dibandingkan kecamatan lainnya pada grafik.

Setelah itu terdapat Cibodas dengan sekitar 35.000 kasus, yang menunjukkan penurunan jumlah kasus yang cukup jelas dibandingkan Pinang. Hal ini menandakan bahwa lima kecamatan teratas memiliki jumlah kasus yang relatif lebih tinggi dibandingkan kecamatan lainnya.

Pada kelompok berikutnya terdapat beberapa kecamatan dengan jumlah kasus menengah. Larangan memiliki sekitar 32.000 kasus, kemudian Kecamatan Tangerang sekitar 30.000 kasus, dan Periuk sekitar 29.000 kasus. Ketiga kecamatan ini memiliki jumlah kasus yang masih cukup besar, tetapi lebih rendah dibandingkan lima kecamatan sebelumnya.

Selanjutnya Neglasari memiliki sekitar 25.000 kasus, diikuti oleh Karang Tengah sekitar 23.000 kasus, serta Jatiuwung sekitar 22.000 kasus. Jumlah kasus pada kecamatan-kecamatan ini terlihat lebih rendah dibandingkan kelompok sebelumnya.

Pada bagian paling bawah grafik terdapat Benda dengan sekitar 20.000 kasus, dan Batuceper dengan sekitar 15.000 kasus. Batuceper menjadi kecamatan dengan jumlah kasus diabetes melitus paling sedikit pada periode 2015–2024.

Secara keseluruhan, grafik ini menunjukkan bahwa distribusi total kasus diabetes melitus di Kota Tangerang tidak merata antar kecamatan. Beberapa kecamatan seperti Cipondoh, Ciledug, Karawaci, dan Pinang memiliki jumlah kasus yang jauh lebih tinggi dibandingkan kecamatan seperti Benda dan Batuceper. Perbedaan ini menunjukkan adanya variasi jumlah kasus diabetes melitus di setiap wilayah kecamatan selama periode pengamatan.

3) Bar Chart dengan Tabel Frekuensi

Untuk membuat bar chart pada bagian ini digunakan tabel frekuensi yang telah didefinisikan sebelumnya yaitu freqtab. Tabel ini berisi jumlah penderita diabetes melitus pada setiap kecamatan di Kota Tangerang.

Pada grafik ini digunakan stat = "identity" sehingga ggplot2 tidak menghitung frekuensi secara otomatis, tetapi langsung menggunakan nilai frekuensi yang sudah ada pada tabel sebagai tinggi batang pada grafik.

Membuat Tabel Frekuensi

Tabel frekuensi dibuat dengan menjumlahkan total kasus diabetes melitus pada setiap kecamatan dari tahun 2015–2024. Data diambil dari file Excel menggunakan package readxl.

library(readxl)
library(dplyr)
library(tidyr)
library(ggplot2)

# Buat tabel frekuensi total per kecamatan
freqtab <- data_tang_clean %>%
  filter(!grepl("^Jumlah", Uraian)) %>%  # hapus baris total
  group_by(Uraian) %>%
  summarise(Freq = sum(Jumlah_Kasus, na.rm = TRUE)) %>%
  arrange(desc(Freq))

freqtab
## # A tibble: 13 × 2
##    Uraian             Freq
##    <chr>             <dbl>
##  1     Cipondoh      42921
##  2     Ciledug       42156
##  3     Karawaci      41946
##  4    Pinang         39998
##  5     Cibodas       34715
##  6     Larangan      31856
##  7     Tangerang     30043
##  8     Periuk        29153
##  9    Neglasari      25112
## 10     Karang Tengah 22890
## 11     Jatiuwung     22276
## 12     Benda         20719
## 13     Batuceper     15462

Membuat Bar Chart

Untuk membuat bar chart ini, digunakan tabel frekuensi yang telah didefinisikan sebelumnya yaitu freqtab, yang berisi jumlah penderita diabetes melitus pada setiap kecamatan di Kota Tangerang.

Pada grafik ini digunakan stat = "identity" sehingga ggplot2 langsung menggunakan nilai frekuensi yang sudah tersedia pada tabel sebagai tinggi batang pada grafik. Hasil visualisasi ditunjukkan sebagai berikut.

ggplot(data = freqtab, aes(x = Uraian, y = Freq)) +
  geom_bar(stat = "identity")

Interpretasi

Berdasarkan grafik batang yang ditampilkan, terlihat perbandingan total jumlah penderita diabetes melitus di setiap kecamatan di Kota Tangerang selama periode pengamatan. Tinggi batang pada grafik menunjukkan total kasus pada masing-masing kecamatan.

Kecamatan dengan jumlah kasus paling tinggi adalah Cipondoh, dengan total kasus sekitar 43 ribu. Nilai ini merupakan yang terbesar dibandingkan kecamatan lain, sehingga menunjukkan bahwa Cipondoh memiliki akumulasi penderita diabetes melitus paling banyak pada periode data yang digunakan.

Jumlah kasus yang juga cukup tinggi terlihat pada Ciledug dan Karawaci, yang masing-masing memiliki total sekitar 42 ribu kasus. Nilai tersebut tidak jauh berbeda dengan Cipondoh, sehingga ketiga kecamatan ini dapat dikatakan sebagai wilayah dengan jumlah kasus tertinggi dalam grafik.

Selanjutnya Pinang juga menunjukkan jumlah kasus yang besar, yaitu sekitar 40 ribu kasus. Meskipun sedikit lebih rendah dibandingkan tiga kecamatan sebelumnya, Pinang masih termasuk dalam kelompok kecamatan dengan jumlah kasus tinggi.

Pada tingkat berikutnya terdapat Cibodas dengan sekitar 35 ribu kasus, kemudian Larangan dengan sekitar 32 ribu kasus. Kedua kecamatan ini memiliki jumlah kasus yang cukup besar tetapi masih lebih rendah dibandingkan kelompok kecamatan dengan kasus tertinggi.

Kecamatan Tangerang memiliki sekitar 30 ribu kasus, sedangkan Periuk berada sedikit di bawahnya dengan sekitar 29 ribu kasus. Nilai ini menunjukkan tingkat kasus yang berada pada kategori menengah jika dibandingkan dengan kecamatan lainnya.

Jumlah kasus yang lebih rendah terlihat pada Neglasari dengan sekitar 25 ribu kasus, diikuti Karang Tengah sekitar 23 ribu kasus, serta Jatiuwung sekitar 22 ribu kasus.

Sementara itu, kecamatan dengan jumlah kasus paling sedikit adalah Benda dengan sekitar 20 ribu kasus dan Batuceper dengan sekitar 15 ribu kasus. Kedua kecamatan ini memiliki total kasus yang jauh lebih rendah dibandingkan kecamatan lain pada grafik.

Secara keseluruhan, grafik menunjukkan bahwa kasus diabetes melitus di Kota Tangerang tidak tersebar secara merata di setiap kecamatan. Beberapa kecamatan seperti Cipondoh, Ciledug, Karawaci, dan Pinang memiliki jumlah kasus yang jauh lebih tinggi, sedangkan Batuceper dan Benda menunjukkan jumlah kasus yang relatif lebih rendah dibandingkan kecamatan lainnya.

Cara lain yang dapat digunakan untuk membuat diagram batang ketika data yang dimiliki sudah dalam bentuk tabel frekuensi adalah dengan menggunakan geom_col().

Pada contoh ini, data yang digunakan adalah tabel frekuensi jumlah penderita diabetes melitus pada setiap kecamatan di Kota Tangerang yang telah disimpan dalam objek freqtab. Fungsi geom_col() akan menggunakan nilai frekuensi yang sudah tersedia pada data sebagai tinggi batang pada grafik. Hasil visualisasi ditunjukkan sebagai berikut.

ggplot(data = freqtab, aes(x = Uraian, y = Freq)) +
  geom_col()

Interpretasi

Grafik batang tersebut menunjukkan perbandingan total jumlah kasus diabetes melitus pada setiap kecamatan di Kota Tangerang berdasarkan tabel frekuensi yang digunakan. Tinggi setiap batang menggambarkan jumlah total kasus yang tercatat pada masing-masing kecamatan.

Dari grafik terlihat bahwa Cipondoh merupakan kecamatan dengan jumlah kasus paling tinggi, yaitu sekitar 43.000 kasus. Nilai ini menjadi yang terbesar dibandingkan kecamatan lainnya sehingga menunjukkan bahwa selama periode data yang digunakan, Cipondoh memiliki akumulasi penderita diabetes melitus yang paling banyak.

Jumlah kasus yang hampir sama juga terlihat pada Ciledug dan Karawaci, yang masing-masing memiliki sekitar 42.000 kasus. Perbedaan jumlah kasus antara ketiga kecamatan tersebut tidak terlalu besar, sehingga dapat dikatakan bahwa ketiganya termasuk dalam kelompok wilayah dengan jumlah kasus tertinggi.

Selanjutnya Pinang memiliki jumlah kasus sekitar 40.000, yang juga tergolong tinggi meskipun sedikit lebih rendah dibandingkan tiga kecamatan sebelumnya. Setelah itu terdapat Cibodas dengan sekitar 35.000 kasus, yang menunjukkan jumlah kasus cukup besar namun mulai terlihat selisih dengan kelompok kecamatan yang memiliki kasus paling tinggi.

Pada tingkat menengah terlihat beberapa kecamatan dengan jumlah kasus yang tidak terlalu jauh berbeda. Larangan memiliki sekitar 32.000 kasus, kemudian Kecamatan Tangerang sekitar 30.000 kasus, dan Periuk sekitar 29.000 kasus. Nilai pada kecamatan-kecamatan ini menunjukkan tingkat kasus yang berada di tengah jika dibandingkan dengan kecamatan lainnya.

Berikutnya terdapat Neglasari dengan sekitar 25.000 kasus, diikuti Karang Tengah sekitar 23.000 kasus, dan Jatiuwung sekitar 22.000 kasus. Jumlah kasus pada wilayah-wilayah ini relatif lebih rendah dibandingkan kecamatan yang berada pada kelompok sebelumnya.

Sementara itu, Benda memiliki sekitar 20.000 kasus, dan Batuceper merupakan kecamatan dengan jumlah kasus paling sedikit, yaitu sekitar 15.000 kasus.

Secara keseluruhan, grafik ini menunjukkan bahwa distribusi kasus diabetes melitus di Kota Tangerang berbeda pada setiap kecamatan. Beberapa kecamatan seperti Cipondoh, Ciledug, Karawaci, dan Pinang memiliki jumlah kasus yang jauh lebih tinggi dibandingkan kecamatan lain seperti Benda dan Batuceper, yang menunjukkan jumlah kasus yang relatif lebih rendah.

Modifikasi Bar Chart

Bar chart dapat dimodifikasi dengan menambahkan judul grafik menggunakan perintah labs(), memberikan warna pada batang grafik menggunakan parameter fill, serta menambahkan label frekuensi pada setiap batang menggunakan perintah geom_text().

Pada contoh ini, grafik menampilkan jumlah penderita diabetes melitus pada setiap kecamatan di Kota Tangerang berdasarkan tabel frekuensi yang telah dibuat sebelumnya. Hasil visualisasi ditunjukkan sebagai berikut.

ggplot(data = freqtab, aes(x = reorder(Uraian, Freq), y = Freq)) +
  geom_col(fill = "pink", alpha = 0.7) +
  coord_flip() +
  labs(title = "Jumlah Penderita Diabetes Melitus per Kecamatan",
       subtitle = "Kota Tangerang, 2015–2024",
       x = "Kecamatan",
       y = "Jumlah Penderita (Orang)") +
  geom_text(aes(label = scales::comma(Freq)), hjust = -0.1, size = 3) +
  theme_minimal()

Interpretasi

Grafik menunjukkan total jumlah penderita diabetes melitus di setiap kecamatan di Kota Tangerang selama periode 2015–2024. Setiap batang merepresentasikan jumlah total kasus pada masing-masing kecamatan, dan angka di ujung batang menunjukkan jumlah kasus secara lebih rinci.

Berdasarkan grafik tersebut, Kecamatan Cipondoh memiliki jumlah penderita diabetes melitus paling tinggi, yaitu sekitar 42.900 kasus. Hal ini menunjukkan bahwa selama periode 2015–2024 Cipondoh menjadi wilayah dengan akumulasi kasus diabetes melitus terbesar dibandingkan kecamatan lainnya.

Di posisi berikutnya terdapat Ciledug dengan sekitar 42.151 kasus. Jumlah ini hanya sedikit lebih rendah dari Cipondoh, sehingga kedua kecamatan tersebut memiliki tingkat kasus yang hampir sama dan termasuk yang paling tinggi di Kota Tangerang.

Selanjutnya Karawaci memiliki sekitar 41.946 kasus. Nilainya juga tidak jauh berbeda dengan Cipondoh dan Ciledug, sehingga ketiga kecamatan ini dapat dikatakan sebagai wilayah dengan jumlah kasus diabetes melitus tertinggi pada grafik.

Pinang berada pada urutan berikutnya dengan sekitar 39.998 kasus. Meskipun sedikit lebih rendah dari tiga kecamatan sebelumnya, jumlah kasus di Pinang masih tergolong tinggi dibandingkan kecamatan lain.

Setelah itu terdapat Cibodas dengan sekitar 34.715 kasus, yang menunjukkan penurunan jumlah kasus yang cukup jelas dibandingkan kelompok kecamatan dengan kasus tertinggi.

Pada kelompok berikutnya terdapat beberapa kecamatan dengan jumlah kasus menengah. Larangan memiliki sekitar 31.856 kasus, kemudian Kecamatan Tangerang sekitar 30.043 kasus, dan Periuk sekitar 29.153 kasus. Ketiga kecamatan ini memiliki jumlah kasus yang relatif berdekatan satu sama lain.

Selanjutnya Neglasari memiliki sekitar 25.112 kasus, yang kemudian diikuti oleh Karang Tengah dengan sekitar 22.890 kasus dan Jatiuwung dengan sekitar 22.276 kasus. Jumlah kasus pada ketiga kecamatan ini terlihat lebih rendah dibandingkan kecamatan yang berada di atasnya.

Pada bagian paling bawah grafik terdapat Benda dengan sekitar 20.719 kasus, serta Batuceper dengan sekitar 15.462 kasus. Batuceper menjadi kecamatan dengan jumlah penderita diabetes melitus paling sedikit pada grafik tersebut.

Secara keseluruhan, grafik ini memperlihatkan bahwa jumlah penderita diabetes melitus di Kota Tangerang tidak tersebar merata di setiap kecamatan. Beberapa kecamatan seperti Cipondoh, Ciledug, Karawaci, dan Pinang memiliki jumlah kasus yang jauh lebih tinggi, sedangkan Benda dan Batuceper memiliki jumlah kasus yang relatif lebih rendah selama periode 2015–2024.

4) Needle Chart

Needle Chart merupakan jenis diagram yang menampilkan data dalam bentuk garis vertikal tipis seperti jarum (needle) yang memanjang dari sumbu horizontal menuju titik nilai tertentu. Grafik ini sering digunakan untuk menunjukkan perbandingan nilai antar kategori dalam suatu data.

Pada contoh ini akan ditampilkan grafik yang menunjukkan jumlah penderita diabetes melitus pada setiap kecamatan di Kota Tangerang berdasarkan tabel frekuensi yang telah dibuat sebelumnya. Hasil visualisasi ditunjukkan pada grafik berikut.

ggplot(data = freqtab,
       aes(x = reorder(Uraian, Freq), y = Freq)) +
  geom_segment(aes(x = reorder(Uraian, Freq),
                   xend = reorder(Uraian, Freq),
                   y = 0, yend = Freq),
               color = "skyblue") +
  geom_point(color = "navyblue", size = 4, alpha = 0.6) +
  geom_text(aes(label = scales::comma(Freq)), vjust = -1, size = 3) +
  coord_flip() +
  labs(title = "Jumlah Penderita Diabetes Melitus per Kecamatan",
       subtitle = "Kota Tangerang, 2015–2024",
       y = "Jumlah Penderita (Orang)",
       x = "Kecamatan") +
  theme_minimal()

Interpretasi

Grafik tersebut menunjukkan jumlah total penderita diabetes melitus pada setiap kecamatan di Kota Tangerang selama periode 2015–2024. Setiap titik pada grafik mewakili jumlah total kasus pada masing-masing kecamatan, sedangkan garis horizontal membantu melihat perbandingan antar kecamatan.

Dari grafik terlihat bahwa Kecamatan Cipondoh memiliki jumlah penderita diabetes melitus paling tinggi, yaitu sekitar 42.921 kasus. Angka ini menjadi yang terbesar dibandingkan kecamatan lain, sehingga menunjukkan bahwa Cipondoh merupakan wilayah dengan akumulasi kasus tertinggi selama periode tersebut.

Di bawahnya terdapat Ciledug dengan sekitar 42.156 kasus dan Karawaci dengan sekitar 41.946 kasus. Kedua kecamatan ini memiliki jumlah kasus yang sangat mendekati Cipondoh, sehingga ketiganya menjadi kelompok kecamatan dengan jumlah penderita diabetes melitus paling tinggi di Kota Tangerang.

Selanjutnya Pinang memiliki sekitar 39.998 kasus. Walaupun sedikit lebih rendah dibandingkan tiga kecamatan sebelumnya, jumlah ini masih tergolong tinggi dan menunjukkan bahwa Pinang juga memiliki tingkat kasus diabetes yang cukup besar.

Pada tingkat berikutnya terdapat Cibodas dengan sekitar 34.715 kasus. Nilai ini menunjukkan penurunan yang cukup jelas dibandingkan kecamatan dengan jumlah kasus tertinggi.

Kemudian Larangan memiliki sekitar 31.856 kasus, diikuti oleh Kecamatan Tangerang dengan sekitar 30.043 kasus, serta Periuk dengan sekitar 29.153 kasus. Ketiga kecamatan ini memiliki jumlah kasus yang relatif berdekatan dan berada pada tingkat menengah jika dibandingkan kecamatan lainnya.

Selanjutnya Neglasari memiliki sekitar 25.112 kasus, kemudian Karang Tengah sekitar 22.890 kasus, dan Jatiuwung sekitar 22.276 kasus. Jumlah kasus pada ketiga kecamatan ini lebih rendah dibandingkan kelompok kecamatan sebelumnya.

Pada bagian paling bawah grafik terdapat Benda dengan sekitar 20.719 kasus, sedangkan Batuceper memiliki jumlah kasus paling sedikit yaitu sekitar 15.462 kasus selama periode 2015–2024.

Secara keseluruhan, grafik ini menunjukkan bahwa jumlah penderita diabetes melitus di Kota Tangerang bervariasi antar kecamatan. Kecamatan seperti Cipondoh, Ciledug, dan Karawaci memiliki jumlah kasus yang jauh lebih tinggi dibandingkan kecamatan seperti Benda dan Batuceper, yang memiliki jumlah kasus relatif lebih rendah.

5) Grouped Bar Chart

Grouped Bar Chart digunakan untuk menampilkan perbandingan beberapa kategori dalam satu kelompok pada diagram batang. Untuk membuat pengelompokan pada bar chart, dapat ditambahkan variabel kelompok menggunakan parameter fill.

Pada contoh ini ditampilkan grafik yang menunjukkan jumlah penderita diabetes melitus pada setiap kecamatan di Kota Tangerang dengan pengelompokan berdasarkan tahun. Visualisasi ini bertujuan untuk memperlihatkan perbandingan jumlah kasus diabetes melitus pada setiap kecamatan dari tahun ke tahun. Hasil visualisasi ditunjukkan pada grafik berikut.

ggplot(data = data_tang_clean %>% 
         filter(!grepl("^Jumlah", Uraian)),
       aes(x = Uraian, y = Jumlah_Kasus, fill = as.factor(Tahun_Data))) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(title = "Jumlah Penderita Diabetes Melitus per Kecamatan",
       subtitle = "Kota Tangerang, 2015–2024",
       x = "Kecamatan",
       y = "Jumlah Penderita (Orang)",
       fill = "Tahun") +
  theme_light() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Interpretasi

Grafik tersebut menampilkan perbandingan jumlah penderita diabetes melitus pada setiap kecamatan di Kota Tangerang untuk masing-masing tahun dari 2015 hingga 2024. Setiap kelompok batang mewakili satu kecamatan, sedangkan warna yang berbeda menunjukkan tahun yang berbeda. Dengan grafik ini dapat dilihat bagaimana perubahan jumlah kasus pada setiap kecamatan dari tahun ke tahun.

Secara umum terlihat bahwa beberapa kecamatan memiliki jumlah kasus yang lebih tinggi dibandingkan kecamatan lainnya. Salah satu yang paling menonjol adalah Ciledug, terutama pada tahun-tahun sekitar 2018–2019, dimana jumlah kasus terlihat jauh lebih tinggi dibandingkan tahun lainnya pada kecamatan yang sama. Hal ini menunjukkan bahwa pada periode tersebut terjadi peningkatan kasus yang cukup besar di wilayah Ciledug.

Cipondoh juga menunjukkan jumlah kasus yang cukup tinggi pada beberapa tahun, terutama pada tahun-tahun sekitar 2020–2022. Pada periode tersebut jumlah kasus di Cipondoh tampak lebih besar dibandingkan banyak kecamatan lain, sehingga wilayah ini termasuk salah satu kecamatan dengan tingkat kasus diabetes yang tinggi.

Kecamatan Karawaci juga memperlihatkan jumlah kasus yang relatif besar pada beberapa tahun, terutama pada sekitar 2021–2022, dimana tinggi batang terlihat lebih besar dibandingkan tahun-tahun sebelumnya. Hal ini menunjukkan adanya peningkatan jumlah kasus pada periode tersebut.

Selanjutnya Pinang juga memiliki jumlah kasus yang cukup tinggi pada beberapa tahun, khususnya pada sekitar 2020–2022, dimana jumlah penderita terlihat meningkat dibandingkan tahun-tahun awal.

Beberapa kecamatan lain seperti Cibodas, Larangan, dan Tangerang menunjukkan jumlah kasus pada tingkat menengah. Pada kecamatan-kecamatan ini jumlah kasus tetap terlihat cukup besar, tetapi tidak setinggi kecamatan seperti Ciledug, Cipondoh, atau Karawaci.

Sementara itu, kecamatan seperti Batuceper, Benda, Jatiuwung, Karang Tengah, dan Neglasari cenderung memiliki jumlah kasus yang relatif lebih rendah dibandingkan kecamatan lainnya pada sebagian besar tahun yang ditampilkan.

Secara keseluruhan, grafik ini menunjukkan bahwa jumlah penderita diabetes melitus di Kota Tangerang bervariasi baik antar kecamatan maupun antar tahun. Beberapa kecamatan secara konsisten memiliki jumlah kasus yang lebih tinggi, sementara kecamatan lain menunjukkan jumlah kasus yang relatif lebih rendah sepanjang periode 2015–2024.

6) Stacked Bar Chart

Stacked Bar Chart merupakan diagram batang yang menampilkan beberapa kategori dalam satu batang secara menumpuk. Untuk membuat tampilan batang yang menumpuk pada bar chart dapat digunakan parameter position = "stack".

Pada contoh ini ditampilkan grafik yang menunjukkan jumlah penderita diabetes melitus pada setiap kecamatan di Kota Tangerang dengan kategori tahun yang ditampilkan secara menumpuk dalam satu batang. Visualisasi ini bertujuan untuk memperlihatkan komposisi jumlah kasus diabetes melitus pada setiap tahun di masing-masing kecamatan. Hasil visualisasi ditunjukkan sebagai berikut.

ggplot(data = data_tang_clean %>% 
         filter(!grepl("^Jumlah", Uraian)),
       aes(x = Uraian, y = Jumlah_Kasus, fill = as.factor(Tahun_Data))) +
  geom_bar(stat = "identity", position = "stack") +
  labs(title = "Jumlah Penderita Diabetes Melitus per Kecamatan",
       subtitle = "Kota Tangerang, 2015–2024",
       x = "Kecamatan",
       y = "Jumlah Penderita (Orang)",
       fill = "Tahun") +
  theme_light() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Interpretasi

Grafik stacked bar tersebut menunjukkan jumlah penderita diabetes melitus pada setiap kecamatan di Kota Tangerang selama periode 2015–2024, dimana setiap batang mewakili satu kecamatan dan setiap warna pada batang menunjukkan jumlah kasus pada tahun tertentu. Dengan tampilan ini dapat dilihat total kasus sekaligus kontribusi masing-masing tahun terhadap total kasus di setiap kecamatan.

Secara keseluruhan terlihat bahwa Cipondoh memiliki total jumlah penderita diabetes melitus paling tinggi dibandingkan kecamatan lainnya. Tinggi batang Cipondoh merupakan yang paling besar, yang menunjukkan bahwa akumulasi kasus dari tahun 2015 hingga 2024 di kecamatan ini merupakan yang tertinggi.

Kecamatan Ciledug juga menunjukkan total kasus yang sangat tinggi dan hampir mendekati Cipondoh. Hal ini terlihat dari tinggi batang yang juga sangat besar dibandingkan sebagian besar kecamatan lainnya.

Selain itu Karawaci dan Pinang juga termasuk kecamatan dengan jumlah kasus yang cukup tinggi. Tinggi batang pada kedua kecamatan tersebut menunjukkan bahwa total kasus selama periode 2015–2024 cukup besar dibandingkan kecamatan lain.

Selanjutnya Cibodas juga memiliki jumlah kasus yang relatif besar, meskipun masih lebih rendah dibandingkan Cipondoh, Ciledug, Karawaci, dan Pinang. Sementara itu Larangan, Tangerang, dan Periuk berada pada kelompok dengan jumlah kasus menengah, yang terlihat dari tinggi batang yang berada di tengah jika dibandingkan kecamatan lainnya.

Kecamatan Neglasari, Karang Tengah, dan Jatiuwung memiliki jumlah kasus yang lebih rendah dibandingkan kelompok sebelumnya, namun tetap menunjukkan adanya kontribusi kasus dari setiap tahun yang ditampilkan pada grafik.

Di sisi lain, Benda dan Batuceper merupakan kecamatan dengan total jumlah penderita diabetes melitus yang paling rendah. Hal ini terlihat dari tinggi batang yang lebih pendek dibandingkan kecamatan lainnya.

Selain memperlihatkan perbedaan total kasus antar kecamatan, grafik stacked bar ini juga menunjukkan bahwa setiap tahun memberikan kontribusi terhadap total kasus pada masing-masing kecamatan, yang ditunjukkan oleh warna-warna berbeda pada setiap bagian batang. Dengan demikian, grafik ini memberikan gambaran mengenai akumulasi jumlah penderita diabetes melitus serta distribusi kasus berdasarkan tahun pada setiap kecamatan di Kota Tangerang selama periode 2015–2024.

7) Pie Chart

Pie chart digunakan untuk menampilkan proporsi atau persentase dari suatu kategori dalam bentuk diagram lingkaran. Untuk membuat pie chart, terlebih dahulu data perlu diringkas menjadi tabel frekuensi.

Pada contoh ini ditampilkan pie chart yang menunjukkan persentase jumlah penderita diabetes melitus pada setiap kecamatan di Kota Tangerang. Data yang digunakan berasal dari data Excel yang telah diringkas menjadi total kasus pada masing-masing kecamatan.

library(dplyr)

df <- data_tang_clean %>%
  filter(!grepl("^Jumlah", Uraian)) %>%
  group_by(Uraian) %>%
  summarise(counts = sum(Jumlah_Kasus, na.rm = TRUE))

df
## # A tibble: 13 × 2
##    Uraian            counts
##    <chr>              <dbl>
##  1    Neglasari       25112
##  2    Pinang          39998
##  3     Batuceper      15462
##  4     Benda          20719
##  5     Cibodas        34715
##  6     Ciledug        42156
##  7     Cipondoh       42921
##  8     Jatiuwung      22276
##  9     Karang Tengah  22890
## 10     Karawaci       41946
## 11     Larangan       31856
## 12     Periuk         29153
## 13     Tangerang      30043

Selanjutnya dihitung posisi label teks berdasarkan jumlah kumulatif proporsi.

df <- df %>%
  arrange(desc(Uraian)) %>%
  mutate(prop = round(counts * 100 / sum(counts), 1),
         lab.ypos = cumsum(prop) - 0.5 * prop)

head(df, 4)
## # A tibble: 4 × 4
##   Uraian        counts  prop lab.ypos
##   <chr>          <dbl> <dbl>    <dbl>
## 1     Tangerang  30043   7.5     3.75
## 2     Periuk     29153   7.3    11.2 
## 3     Larangan   31856   8      18.8 
## 4     Karawaci   41946  10.5    28.0

Setelah itu, kita dapat membuat grafik Pie Chart dengan perintah geom_bar() dan coord_polar(). Hasilnya sebagai berikut.

ggplot(df, aes(x = "", y = prop, fill = Uraian)) +
  geom_bar(width = 1, stat = "identity", color = "white") +
  geom_text(aes(y = lab.ypos, label = paste0(prop, "%")), color = "white", size = 3) +
  coord_polar("y", start = 0) +
  ggpubr::fill_palette("rainbow") +
  labs(fill = "Kecamatan",
       title = "Persentase Jumlah Penderita Diabetes Melitus per Kecamatan",
       subtitle = "Kota Tangerang, 2015–2024") +
  theme_void()

Interpretasi

Pie chart tersebut menunjukkan persentase kontribusi jumlah penderita diabetes melitus pada setiap kecamatan di Kota Tangerang selama periode 2015–2024 terhadap total keseluruhan kasus. Setiap potongan lingkaran menggambarkan proporsi kasus dari masing-masing kecamatan.

Berdasarkan grafik tersebut terlihat bahwa Cipondoh memiliki persentase terbesar, yaitu sekitar 10,6% dari total kasus diabetes melitus di Kota Tangerang. Hal ini menunjukkan bahwa kontribusi kasus dari Kecamatan Cipondoh merupakan yang paling besar dibandingkan kecamatan lainnya.

Persentase yang hampir sama juga terlihat pada Ciledug dan Karawaci, yang masing-masing menyumbang sekitar 10,5% dan 10% dari total kasus. Ketiga kecamatan tersebut menjadi wilayah dengan kontribusi terbesar terhadap jumlah kasus diabetes melitus di Kota Tangerang selama periode pengamatan.

Selanjutnya Pinang menyumbang sekitar 9,8% dari total kasus, sedangkan Cibodas sekitar 8,7%. Kedua kecamatan ini juga memiliki kontribusi yang cukup besar terhadap total jumlah penderita diabetes melitus.

Pada kelompok berikutnya terdapat Larangan dengan sekitar 7,5%, kemudian Kecamatan Tangerang sekitar 7%, serta Periuk sekitar 6,9%. Persentase pada kecamatan-kecamatan ini berada pada tingkat menengah jika dibandingkan dengan kecamatan lainnya.

Sementara itu Neglasari menyumbang sekitar 6,3%, diikuti Karang Tengah sekitar 5,7%, dan Jatiuwung sekitar 5,6% dari total kasus.

Di sisi lain, Benda memiliki kontribusi sekitar 5,2%, sedangkan Batuceper merupakan kecamatan dengan persentase paling kecil, yaitu sekitar 3,9% dari total jumlah penderita diabetes melitus selama periode 2015–2024.

Secara keseluruhan, pie chart ini menunjukkan bahwa kontribusi kasus diabetes melitus di Kota Tangerang tersebar di seluruh kecamatan, namun beberapa kecamatan seperti Cipondoh, Ciledug, dan Karawaci memberikan kontribusi yang lebih besar terhadap total kasus dibandingkan kecamatan lainnya.

8) Peta Spasial

Pada pembuatan peta spasial, data yang perlu disiapkan adalah data Excel yang berisi jumlah penderita diabetes melitus serta data peta dalam format shapefile (SHP). Kedua data tersebut akan digunakan untuk menampilkan sebaran kasus diabetes melitus secara geografis pada peta.

Data Excel terlebih dahulu diunduh dan kemudian diimpor ke dalam R bersama dengan file shapefile yang berisi batas wilayah administrasi.

## Warning: package 'tmap' was built under R version 4.4.3
## Warning: package 'mapview' was built under R version 4.4.3

Import Data Excel dan SHP

Pada tahap ini dilakukan proses import data yang akan digunakan dalam analisis. Data yang digunakan terdiri dari dua jenis, yaitu file Excel dan file shapefile (SHP).

Sebelum mengimpor data, working directory terlebih dahulu ditetapkan menggunakan perintah setwd() agar R mengenali lokasi folder kerja yang digunakan, sehingga pemanggilan file selanjutnya cukup menggunakan nama file tanpa perlu menuliskan path lengkap.

Data pertama berupa file Excel yang berisi jumlah penderita diabetes melitus, diimpor menggunakan perintah read_xlsx() dari package readxl dan disimpan dalam objek data_tang.

Data kedua berupa file shapefile (SHP) yang berisi informasi batas wilayah administrasi desa atau kelurahan di Kota Tangerang, diimpor menggunakan perintah read_sf() dari package sf dan disimpan dalam objek shp_tang. File SHP tersebut berada di dalam subfolder SHP Tangerang pada working directory yang telah ditetapkan.

#Set Working Directory
setwd("C:/Users/rahay/OneDrive/Documents/Semester 4/Eksplorasi dan Visualisasi Data")
#Import Data Excel
data_diabet=read_excel("Data_jumlah-penderita-diabetes-melitus.xlsx")
## New names:
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
# Import Data SHP Tangerang
shp_tangerang=read_sf("SHP-TANGERANG1/ADMINISTRASIDESA_AR_25K.shp")

Selanjutnya data shapefile yang telah diimpor digunakan untuk proses visualisasi peta. Data ini berisi informasi wilayah administrasi seperti nama desa atau kelurahan serta kecamatan di Kota Tangerang.

Agar dapat menampilkan jumlah kasus diabetes melitus pada peta, data shapefile kemudian digabungkan dengan data Excel yang berisi jumlah penderita diabetes melitus pada setiap kecamatan. Setelah data digabungkan, pemetaan dapat dilakukan menggunakan fungsi geom_sf() dari package ggplot2.

# Clean data Excel
data.tang.map <- data_diabet %>%
  rename(`2024` = ...13) %>%
  filter(!is.na(Uraian), Uraian != "",
         !grepl("^Jumlah", Uraian)) %>%
  mutate(Uraian = toupper(trimws(gsub("^36\\.71\\.\\d+\\s+", "", Uraian))),
         jumlah = as.numeric(`2024`)) %>%
  select(Uraian, jumlah)

# Agregasi SHP ke level kecamatan
shp.tangerang1 <- shp_tangerang %>%
  mutate(WADMKC = toupper(WADMKC)) %>%
  group_by(WADMKC) %>%
  summarise(geometry = st_union(geometry))

# Cek nama yang tidak cocok
tidak_cocok <- anti_join(data.tang.map, as.data.frame(shp.tangerang1), by = c("Uraian" = "WADMKC"))
print(tidak_cocok)
## # A tibble: 13 × 2
##    Uraian            jumlah
##    <chr>              <dbl>
##  1     TANGERANG       2536
##  2     JATIUWUNG       1892
##  3     BATUCEPER       1462
##  4     BENDA           1358
##  5     CIPONDOH        3703
##  6     CILEDUG         2519
##  7     KARAWACI        3046
##  8     PERIUK          2204
##  9     CIBODAS         2298
## 10    NEGLASARI        1863
## 11    PINANG           2888
## 12     KARANG TENGAH   1945
## 13     LARANGAN        2233
# Perbaiki nama yang tidak cocok
data_tange.map <- data_diabet %>%
  rename(`2024` = ...13) %>%
  filter(!is.na(Uraian), Uraian != "",
         !grepl("^Jumlah", Uraian)) %>%
  mutate(Uraian = iconv(Uraian, to = "ASCII//TRANSLIT"),
         Uraian = gsub("[^A-Za-z ]", "", Uraian),
         Uraian = toupper(trimws(Uraian)),
         Uraian = gsub("\\s+", " ", Uraian),
         jumlah = as.numeric(`2024`)) %>%
  select(Uraian, jumlah)

# Join
gabung_tangerang <- left_join(shp.tangerang1, data_tange.map, by = c("WADMKC" = "Uraian"))

# Cek hasil
summary(gabung_tangerang$jumlah)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    1358    1932    2266    2340    2624    3703      13

Pemetaan Data Spasial

Selanjutnya dilakukan proses pemetaan menggunakan fungsi geom_sf() dari package ggplot2. Pada contoh ini akan ditampilkan peta wilayah administrasi desa atau kelurahan di Kota Tangerang berdasarkan data shapefile yang telah diimpor sebelumnya.

Peta ini digunakan untuk menampilkan sebaran jumlah penderita diabetes melitus pada setiap kecamatan di Kota Tangerang. Hasil visualisasi ditunjukkan pada gambar berikut.

plot_dm <- ggplot(data = gabung_tangerang) +
  geom_sf(aes(fill = jumlah)) +
  scale_fill_distiller(palette = "YlOrRd", direction = 1) +
  labs(title = "Peta Sebaran Kasus Diabetes Melitus per Kecamatan",
       subtitle = "Kota Tangerang 2024",
       fill = "Jumlah Kasus") +
  theme_minimal()

plot_dm

Pemetaan Interaktif

mapview(gabung_tangerang, zcol = "jumlah", layer.name = "Jumlah Kasus Diabetes 2024")

Interpretasi

Kecamatan Cipondoh (area kuning di tengah) memiliki jumlah kasus diabetes tertinggi di tahun 2024, sekitar 3.500 kasus. Ini konsisten dengan temuan di bar chart sebelumnya. Kecamatan di sekitarnya seperti Karawaci dan Pinang terlihat berwarna hijau-kuning, menandakan kasus yang juga cukup tinggi di kisaran 2.500–3.000.

Kecamatan Larangan, Ciledug, dan Cibodas di bagian barat-selatan terlihat berwarna teal/hijau kebiruan, menandakan kasus menengah sekitar 2.000–2.500. Kecamatan Batuceper, Benda, dan Neglasari berwarna ungu tua, menandakan kasus paling rendah di kisaran 1.500.

9) Kesimpulan

Berdasarkan hasil visualisasi data kategorik, jumlah penderita diabetes melitus di Kota Tangerang menunjukkan variasi yang cukup jelas antar kecamatan. Cipondoh (~42.921 kasus), Ciledug (~42.156), dan Karawaci (~41.946) secara konsisten menjadi kecamatan dengan jumlah kasus tertinggi, sementara Batuceper (~15.462) dan Benda (~20.719) mencatat jumlah kasus paling rendah. Kesenjangan antara kecamatan tertinggi dan terendah mencapai hampir tiga kali lipat, yang menunjukkan distribusi kasus tidak merata di seluruh wilayah.

Dilihat dari tren waktu melalui grouped bar chart dan stacked bar chart, kasus baru tercatat secara signifikan mulai tahun 2020, dengan peningkatan yang konsisten hingga 2023 di hampir semua kecamatan. Cipondoh menunjukkan pertumbuhan paling stabil, sedangkan Ciledug sempat mengalami lonjakan besar pada periode tertentu.

Berbagai jenis visualisasi yang digunakan bar chart, needle chart, grouped bar chart, stacked bar chart, pie chart, dan peta spasial, saling melengkapi dalam memberikan gambaran yang menyeluruh, baik dari sisi perbandingan antar kecamatan, tren antar tahun, proporsi kontribusi, maupun sebaran geografis. Peta spasial khususnya memperlihatkan bahwa kecamatan dengan kasus tinggi cenderung terkonsentrasi di wilayah tengah dan barat Kota Tangerang yang merupakan kawasan padat penduduk.


Terima kasih sudah membaca blog ini. Semoga bermanfaat. ^_^