Dataset chickwts di R merupakan dataset bawaan yang berisi data mengenai bobot anak ayam setelah diberikan berbagai jenis pakan. Dataset ini sering dimanfaatkan dalam analisis statistik, terutama untuk membandingkan kelompok dengan metode seperti uji ANOVA atau uji t.
Package {ggplot2} juga menyediakan beberapa dataframe yang dapat digunakan untuk latihan. Salah satu dataframe yang disediakan adalah data chickwts, yaitu data tentang berat dan makanan dari hewan ayam
library(ggplot2)
data(chickwts)
head(chickwts)
dim(chickwts)
## [1] 71 2
Untuk membuat histogram pada package {ggplot2} menggunakan perintah
geom_histogram(). Variable yang digunakan yaitu
weight pada data chickwts.
ggplot(data = chickwts, mapping = aes(x = weight)) +
geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Secara defaut, geom_histogram() menggunakan 30 bins
(batang). Selanjutnya mengganti nilai bins tersebut dengan menambahkan
argumen bins = 50. Hasilnya sebagai berikut.
ggplot(data = chickwts, mapping = aes(x = weight)) +
geom_histogram(bins = 50)
Kita dapat memberikan pemisah dengan warna putih Anda dapat tambahkan
argumen color = "white". Hasilnya sebagai berikut.
ggplot(data = chickwts, mapping = aes(x = weight)) +
geom_histogram(bins = 30, color = "white")
Kita dapat mengubah warna batang dengan menggunakan argumen
fill, mengubah format penulisan nilai pada sumbu x dan y
menggunakan function scale_x_continuous() untuk sumbu x dan
scale_y_continuous() untuk sumbu y dan mengubah nama label
pada sumbu x dan y dengan fungsi labs. Hasilnya sebagai
berikut.
library(scales)
ggplot(data = chickwts, mapping = aes(x = weight)) +
geom_histogram(bins = 30, color = "white", fill = "purple") +
scale_x_continuous(labels = comma) +
scale_y_continuous(labels = comma) +
labs(x = "Price",
y = "Frekuensi")
Untuk membuat density plot menggunakan ggplot2 kita cukup menggunakan function geom_density()
ggplot(data = chickwts, mapping = aes(x = weight)) +
geom_density()
Untuk mengatur warna, transaparansi, format penulisan nilai pada sumbu x dan y, dan labeling sumbu x sama seperti pembuatan Histogram. Hasilnya sebagai berikut.
ggplot(data = chickwts, mapping = aes(x = weight)) +
geom_density(fill = "coral", alpha = 0.7) +
scale_x_continuous(labels = comma) +
scale_y_continuous(labels = comma) +
labs(x = "Price")
Kita dapat membandingkan sebaran menggunakan density plot berdasarkan kategori. Misal akan dilihat sebaran berat makanan (weight) berdasarkan kategori makanan (feed). Hasilnya sebagai berikut.
ggplot(data = chickwts, mapping = aes(x = weight, fill = feed, color = feed)) +
geom_density(alpha = 0.7) +
scale_x_continuous(labels = comma) +
scale_y_continuous(labels = comma) +
labs(x = "Price")
Untuk mengurangi kesulitan dalam mengamati visual tersebut maka perlu dipisah per kategori dengan menggunakan visualisasi ridgeline plot atau disebut juga joyplot.
library(ggridges)
ggplot(data = chickwts, mapping = aes(x = weight, y= feed,fill = feed)) +
geom_density_ridges() +
labs(x = "Harga berlian", y = "kualitas berlian")
## Picking joint bandwidth of 24.4
Untuk membuat boxplot di ggplot2 kita dapat gunakan
function geom_boxplot()
ggplot(data = chickwts, mapping = aes(x = weight)) +
geom_boxplot()
Membuat boxplot secara vertikal menggunakan perintah
coord_flip(). Hasilnya sebagai berikut.
ggplot(data = chickwts, mapping = aes(x = weight)) +
geom_boxplot()+
coord_flip()
kita dapat membuat boxplot dari data numerik dan membandingkan sebarannya berdasarkan kategori. Misalnya kita ingin membandingkan sebaran harga berlian (price) berdasarkan tingkat warna (color). Hasilnya sebagai berikut.
ggplot(data = chickwts, mapping = aes(x = weight, y = feed)) +
geom_boxplot()
Selanjutnya memberi warna berbeda untuk setiap box berdasarkan
kategorinya. Kita dapat menambahkan argumen fill dengan
nilai berupa nama variabel dari kategori yang ingin kita gunkan untuk
perbandingan boxplot. Misalnya kita ingin membandingkan sebaran dari
berat makanan (weight) berdasarkan warnanya (feed)
menggunakan boxplot dan menyesuaikan warnanya
berdasarkan kategori dari feed. Hasilnya sebagai berikut.
ggplot(data = chickwts, mapping = aes(x = weight, y = feed, fill = feed)) +
geom_boxplot()
Untuk menghilangkan legend dari color kita dapat tambahkan theme(legend.position = “none”).Hasilnya sebagai berikut.
ggplot(data = chickwts, mapping = aes(x = weight, y = feed, fill = feed)) +
geom_boxplot() +
theme(legend.position = "none")
Plot ini dibentuk dengan menggabungkan antara Density Plot dengan boxplot. Hasilnya sebagai berikut.
ggplot(data = chickwts, mapping = aes(x = weight,y="all")) +
geom_violin(fill="green",alpha=0.5) +
geom_boxplot(fill="blue",width=0.1)
Plot ini berguna untuk memeriksa apakah sebaran data (sebaran empirik) memiliki bentuk yang sama dengan sebaran tertentu yang dispesifikan (sebaran hipotetik). Misalnya kita ingin melihat pola berat makanan (weight). apakah menyebar normal atau tidak.
ggplot(data = chickwts, aes(sample = weight)) +
stat_qq(col="blue", cex=0.9) +
stat_qq_line(col="red", lwd=1)
Untuk membuat scatter plot menggunakan ggplot2 kita
dapat menggunakan geom_point(). Misalnya kita ingin melihat
pola sebaran antara feed dan weight.
ggplot(data = chickwts, mapping = aes(x = weight, y = feed)) +
geom_point()
Kita juga dapat memberikan warna untuk setiap titik. Misalnya warna masing-masing titik menyesuaikan dengan kategori pada variabel feed.
ggplot(data = chickwts, mapping = aes(x = weight, y = feed, color = feed)) +
geom_point()
Plot ini digunakan untuk melihat trend data berdasarkan perubahan waktu. Artinya pada Line Chart cocok untuk data-data deret waktu.
Data yang digunakan yaitu data crypto currency.
setwd("D:/visdat")
kripto <- read.csv("XSGD-USD.csv",sep = ",")
kripto$tanggalabangkuh <- as.Date.character(kripto$timestamp,"%Y-%m-%d")
head(kripto)
str(kripto)
## 'data.frame': 589 obs. of 8 variables:
## $ timestamp : chr "2021-02-17 00:00:00" "2021-02-18 00:00:00" "2021-02-19 00:00:00" "2021-02-20 00:00:00" ...
## $ adjclose : num 0.759 0.748 0.752 0.752 0.756 ...
## $ open : num 0.738 0.759 0.748 0.752 0.752 ...
## $ low : num 0.738 0.739 0.736 0.749 0.748 ...
## $ volume : int 14443 60538 37277 28954 150178 169264 684096 947702 839240 677028 ...
## $ high : num 0.759 0.846 0.759 0.756 0.78 ...
## $ close : num 0.759 0.748 0.752 0.752 0.756 ...
## $ tanggalabangkuh: Date, format: "2021-02-17" "2021-02-18" ...
ggplot(data = kripto, aes(x=tanggalabangkuh,y=volume)) +
geom_line() +
labs(x="tanggal", x="volume dari crypto")
Untuk menambah estetika dapat dilakukan dengan mengarsir daerah di bawah plot deret waktu. Plot seperti ini disebut Area Plot. Hasilnya sebagai berikut.
ggplot(data = kripto, aes(x=tanggalabangkuh,y=volume)) +
geom_line(lwd=1.2, col="darkgreen") +
geom_area(fill="green", alpha=0.3)
labs(x="tanggal", x="volume dari crypto")
## $x
## [1] "tanggal"
##
## attr(,"class")
## [1] "labels"
Pada plot ini dapat digunakan untuk membandingkan trend data deret waktu pada beberapa wilayah/kelompok.
ggplot(data = kripto, aes(x=tanggalabangkuh)) +
geom_line(aes(y=low), lwd=1.2, col="blue") +
geom_line(aes(y=high), lwd=1.2, col="red") +
labs(x="tanggal", x="volume dari crypto")
Untuk menambahkan nama kelompok digunakan perintah berikut.
ggplot(data = kripto ,aes(x=tanggalabangkuh)) +
geom_line(aes(y=low), lwd=1.2, col="blue") +
geom_line(aes(y=high), lwd=1.2, col="red") +
xlim(min(kripto$tanggalabangkuh),max(kripto$tanggalabangkuh)+100) +
geom_text(x=max(kripto$tanggalabangkuh),y=tail(kripto$low,1)+30,
label="DKI Jakarta", size = 5,
color="blue", hjust=-0.1) +
geom_text(x=max(kripto$tanggalabangkuh),y=tail(kripto$high,1)+30,
label="Jawa Barat", size = 5,
color="red", hjust=-0.1) +
labs(x="tanggal", x="volume dari crypto")