Packages

Berikut adalah packages yang digunakan, yaitu:

library(scales)
library(ggridges)
library(ggplot2)

Input Data

Disini saya menggunakan dataset Penguins yang berisi informasi tentang spesies penguin beserta beberapa karakteristiknya seperti panjang sirip, berat badan, dan jenis kelamin.

# Memanggil Data
penguins <- read.csv("C:/Users/priya/Downloads/penguins_size.csv", na.strings = c(".", "NA"))
str(penguins)
## 'data.frame':    344 obs. of  7 variables:
##  $ species          : chr  "Adelie" "Adelie" "Adelie" "Adelie" ...
##  $ island           : chr  "Torgersen" "Torgersen" "Torgersen" "Torgersen" ...
##  $ culmen_length_mm : num  39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ...
##  $ culmen_depth_mm  : num  18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ...
##  $ flipper_length_mm: int  181 186 195 NA 193 190 181 195 193 190 ...
##  $ body_mass_g      : int  3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ...
##  $ sex              : chr  "MALE" "FEMALE" "FEMALE" NA ...
# Memindahkan Kolom Species ke Kolom Terakhir
penguins <- penguins[, c(setdiff(names(penguins), "species"), "species")]

# Cek data apakah ada missing value
colSums(is.na(penguins))
##            island  culmen_length_mm   culmen_depth_mm flipper_length_mm 
##                 0                 2                 2                 2 
##       body_mass_g               sex           species 
##                 2                11                 0
# Menghapus baris yang memiliki missing value di kolom sex
penguins <- penguins[!is.na(penguins$sex), ]

# Mengecek data apakah masih ada missing value
colSums(is.na(penguins))
##            island  culmen_length_mm   culmen_depth_mm flipper_length_mm 
##                 0                 0                 0                 0 
##       body_mass_g               sex           species 
##                 0                 0                 0

Histogram

Histogram digunakan untuk melihat distribusi panjang sirip penguin.

ggplot(data = penguins, mapping = aes(x = flipper_length_mm)) + 
  geom_histogram(bins = 30, color = "white", fill = "darkgreen") + 
  scale_x_continuous(labels = comma) + 
  scale_y_continuous(labels = comma) + 
  labs(x = "Panjang Sirip", 
       y = "Frekuensi")

Density Plot

Density plot digunakan untuk melihat distribusi probabilitas panjang sirip dengan visualisasi yang lebih halus dibandingkan histogram.

ggplot(data = penguins, mapping = aes(x = flipper_length_mm)) + 
  geom_density(fill = "green", alpha = 0.7) + 
  scale_x_continuous(labels = comma) + 
  scale_y_continuous(labels = comma) + 
  labs(x = "Panjang Sirip")

ggplot(data = penguins, mapping = aes(x = flipper_length_mm, fill = species, color = species)) + 
  geom_density(alpha = 0.7) + 
  scale_x_continuous(labels = comma) + 
  scale_y_continuous(labels = comma) + 
  labs(x = "Panjang Sirip")

ggplot(data = penguins, mapping = aes(x = flipper_length_mm, y = species, fill = species)) + 
  geom_density_ridges() + 
  labs(x = "Panjang Sirip", y = "Species")
## Picking joint bandwidth of 2.4

Boxplot

Boxplot digunakan untuk membandingkan distribusi panjang sirip antar spesies penguin.

ggplot(data = penguins, mapping = aes(x = flipper_length_mm)) + 
  geom_boxplot()

ggplot(data = penguins, mapping = aes(x = flipper_length_mm)) + 
  geom_boxplot()+
  coord_flip()

ggplot(data = penguins, mapping = aes(x = flipper_length_mm, y = island)) + 
  geom_boxplot()

ggplot(data = penguins, mapping = aes(x = flipper_length_mm, y = island, fill = island)) + 
  geom_boxplot()

ggplot(data = penguins, mapping = aes(x = flipper_length_mm, y = island, fill = island)) + 
  geom_boxplot() + 
  theme(legend.position = "none")

Violin Plot

Violin plot digunakan untuk melihat distribusi panjang sirip antar spesies dengan menampilkan kepadatan data seperti pada density plot.

ggplot(data = penguins, mapping = aes(x = flipper_length_mm, y = "all")) +
  geom_violin(fill="green",alpha=0.5) +
  geom_boxplot(fill="darkgreen",width=0.1)

QQ Plot

QQ plot digunakan untuk memeriksa apakah distribusi panjang sirip mengikuti distribusi normal.

ggplot(data = penguins, aes(sample = flipper_length_mm)) +
  stat_qq(col="blue", cex=0.9) +
  stat_qq_line(col="red", lwd=1)

Scatter Plot

Scatter plot digunakan untuk melihat hubungan antara panjang sirip dan berat badan penguin.

ggplot(data = penguins, mapping = aes(x = culmen_length_mm, y = flipper_length_mm, color = species)) + 
  geom_point()

Line Chart

Line chart digunakan untuk melihat tren perubahan harga tertinggi dari waktu ke waktu, dan membandingkan harga tertinggi dan terendah.

Input Data

Dataset ini berisi data historis harga mata uang kripto XRP/USDT dari tahun 2018 hingga 2024.

xrp <- read.csv("C:/Users/priya/Downloads/XRPUSDT20182024.csv",sep = ",")
xrp$tanggal <- as.Date.character(xrp$Date,"%m/%d/%Y")
head(xrp)
##        Date  Price   Open   High    Low       Vol Change..    tanggal
## 1 5/26/2024 0.5341 0.5416 0.5418 0.5328 178450000   -1.39% 2024-05-26
## 2 5/25/2024 0.5416 0.5359 0.5425 0.5334 246380000    1.09% 2024-05-25
## 3 5/24/2024 0.5358 0.5288 0.5372 0.5169 513880000    1.33% 2024-05-24
## 4 5/23/2024 0.5288 0.5269 0.5456 0.5091 948100000    0.38% 2024-05-23
## 5 5/22/2024 0.5268 0.5372 0.5382 0.5236 509460000   -1.94% 2024-05-22
## 6 5/21/2024 0.5372 0.5377 0.5565 0.5321 812410000   -0.09% 2024-05-21
str(xrp)
## 'data.frame':    2192 obs. of  8 variables:
##  $ Date    : chr  "5/26/2024" "5/25/2024" "5/24/2024" "5/23/2024" ...
##  $ Price   : num  0.534 0.542 0.536 0.529 0.527 ...
##  $ Open    : num  0.542 0.536 0.529 0.527 0.537 ...
##  $ High    : num  0.542 0.542 0.537 0.546 0.538 ...
##  $ Low     : num  0.533 0.533 0.517 0.509 0.524 ...
##  $ Vol     : num  1.78e+08 2.46e+08 5.14e+08 9.48e+08 5.09e+08 ...
##  $ Change..: chr  "-1.39%" "1.09%" "1.33%" "0.38%" ...
##  $ tanggal : Date, format: "2024-05-26" "2024-05-25" ...

Line chart Dasar

Line Chart digunakan untuk menampilkan pergerakan harga tertinggi XRP dari waktu ke waktu.

ggplot(data = xrp, aes(x=tanggal,y=High)) +
  geom_line() +
  labs(x="Tanggal", y="Harga Tertinggi") 

Area Plot

Agar menambah estetikan dengan cara mengarsir daerah di bawah plot deret waktu.

ggplot(data = xrp, aes(x=tanggal,y=High)) +
  geom_line(lwd=1.2, col="darkgreen") +
  geom_area(fill="green", alpha=0.5) +
labs(x="Tanggal", y="Harga Tertinggi")

Multiple Line Chart

Pada plot ini digunakan untuk membandingkan trend data deret waktu pada kelompok Harga Tertinggi dan Harga Terendah Crypto.

ggplot(data = xrp, aes(x=tanggal)) +
  geom_line(aes(y=High), lwd=1.2, col="blue") +
  geom_line(aes(y=Low), lwd=1.2, col="red") +
  labs(x="tanggal", y="Harga") 

Menambakan nama kelompok

ggplot(data = xrp, aes(x=tanggal)) +
  geom_line(aes(y=High), lwd=1.2, col="blue") +
  geom_line(aes(y=Low), lwd=1.2, col="red") +
  xlim(min(xrp$tanggal),max(xrp$tanggal)+60) +
  geom_text(x=max(xrp$tanggal),y=tail(xrp$High,1)*1.05, # Tambah 5% dari nilai asli
            label="High", size = 5,
            color="blue", hjust=-0.1) +
  geom_text(x=max(xrp$tanggal),y=tail(xrp$Low,1)*0.95, # Kurang 5% dari nilai asli
            label="Low", size = 5,
            color="red", hjust=-0.1) +
  labs(x="tanggal", y="Harga")