<- 1:10
x <- x^2
y plot(x, y, type="b", col="blue", main="Hubungan x dan x^2",
xlab="x", ylab="x^2")
Pemrograman Grafik
Rangkuman Materi
R menyediakan dua pendekatan utama untuk membuat grafik:
1. Base R Graphics – cepat dan sederhana, cocok untuk eksplorasi.
2. Grammar of Graphics (ggplot2) – fleksibel, konsisten, dan estetik.
Device dalam R
Device adalah media output grafik di R. Default-nya adalah layar (Windows, X11, Quartz). Namun kita bisa juga menyimpan grafik ke file.
Contoh perangkat (devices):
- Layar: windows()
, X11()
, quartz()
- File: png()
, jpeg()
, bmp()
, pdf()
Grafik Dasar (Base R)
plot(x, y, type, main, xlab, ylab, col, lwd, pch)
Parameter type
penting:
"p"
= points"l"
= lines"b"
= both"h"
= histogram-like"s"
= step"n"
= hanya sumbu (tanpa data)
# membuat vektor data
<- c(1:10); y <- x^2
x
# membagi jendela grafik menajdi 2 baris dan 4 kolom
par(mfrow=c(2,4))
# loop
<- c("p","l","b","o","h","s","n")
type for (i in type){
plot(x,y, type= i,
main= paste("type=", i))
}
set.seed(123)
<- rnorm(200, mean=50, sd=10)
data
hist(data, freq=FALSE, col="lightblue", main="Distribusi Normal")
curve(dnorm(x, mean=50, sd=10), add=TRUE, col="red", lwd=2)
Boxplot
Boxplot digunakan untuk membandingkan distribusi beberapa kelompok.
boxplot(len ~ supp, data=ToothGrowth, col=c("orange","cyan"),
main="Efek Suplemen terhadap Panjang Gigi")
Grafik dengan ggplot2
Paket ggplot2
didasarkan pada konsep Grammar of Graphics.
Formula umum:
grafik=data+aes()+geom+stat+scale
library(ggplot2)
Warning: package 'ggplot2' was built under R version 4.4.3
ggplot(mpg, aes(x=class, fill=drv)) +
geom_bar() +
labs(title="Jumlah Mobil per Kelas dan Jenis Penggerak")
Cheetsheet ggplot2
Contoh Studi Kasus
Tren Penjualan
Sebuah perusahaan ingin melihat tren penjualan bulanan selama 2 tahun.
set.seed(42)
<- 1:24
bulan <- round(rnorm(24, mean=1000, sd=200))
sales
plot(bulan, sales, type="l", lwd=2, col="blue",
main="Tren Penjualan Bulanan",
xlab="Bulan", ylab="Penjualan")
abline(h=mean(sales), col="red", lty=2) # rata-rata
Interpretasi: garis biru menunjukkan fluktuasi penjualan bulanan, garis merah menunjukkan rata-rata.
Perbandingan Kelompok Pasien
Seorang peneliti kesehatan ingin membandingkan tekanan darah sistolik antara kelompok A dan B.
set.seed(99)
<- rnorm(50, mean=120, sd=15)
A <- rnorm(50, mean=135, sd=20)
B <- data.frame(
data_bp group = rep(c("A","B"), each=50),
systolic = c(A,B)
)
ggplot(data_bp, aes(x=group, y=systolic, fill=group)) +
geom_boxplot() +
labs(title="Perbandingan Tekanan Darah Sistolik") +
scale_fill_manual(values=c("skyblue","tomato"))
Interpretasi: terlihat bahwa kelompok B cenderung memiliki nilai sistolik lebih tinggi.
Data Pariwisata
Data simulasi jumlah wisatawan domestik dan mancanegara di beberapa provinsi.
<- c("Bali","Jakarta","Jabar","Jatim","Sumut","DIY")
prov <- sample(500:1000, 6)
domestik <- sample(300:700, 6)
manca
<- data.frame(
df_tour Provinsi = rep(prov, 2),
Wisatawan = c(domestik, manca),
Kategori = rep(c("Domestik","Mancanegara"), each=6)
)
ggplot(df_tour, aes(x=Provinsi, y=Wisatawan, fill=Kategori)) +
geom_bar(stat="identity") +
geom_text(aes(label=Wisatawan), position=position_stack(vjust=0.5)) +
labs(title="Jumlah Wisatawan per Provinsi") +
scale_fill_manual(values=c("gold","darkgreen"))
Interpretasi: stacked bar chart memperlihatkan kontribusi wisatawan domestik dan mancanegara per provinsi.
Latihan Soal
- Buatlah scatter plot dari
x=1:20
dany=x^2
menggunakanplot()
dengan judul “Kuadrat Bilangan”. - Gunakan
hist()
untuk menampilkan histogram dari 200 bilangan acak Normal(μ=5, σ=2). Beri warna biru dan judul “Histogram Data Normal”. - Buat grafik garis (
type="l"
) dari fungsi sinus pada interval [0, 4π] dengan grid vertikal pada setiap π/2. - Dengan data
iris
, tampilkan boxplot panjang kelopak (Petal.Length
) per spesies menggunakan base R. - Gunakan
ggplot2
untuk menampilkan distribusi panjang sepal (Sepal.Length
) berdasarkan spesies dengangeom_density()
. - Simulasikan data penjualan bulanan selama 24 bulan (Normal rata-rata=1000, sd=200). Buat grafik garis dengan garis tren rata-rata.
- Dengan dataset
mtcars
, tampilkan scatter plotmpg
vshp
dengan:ukuran titik proporsional dengan
wt
warna berdasarkan
cyl
garis regresi linear.
- Buat dataset simulasi jumlah kunjungan rumah sakit per bulan selama 12 bulan untuk 3 kota. Gunakan distribusi acak dengan rata-rata yang berbeda untuk tiap kota. Buat bar chart yang membandingkan rata-rata kunjungan per kota, dengan anotasi nilai rata-rata di atas batang untuk tiap kota.
- Penjualan Produk per Kategori Simulasikan data penjualan untuk 5 produk selama 6 bulan. Data terdiri dari total penjualan untuk tiap produk dan kategori. Buat grafik stacked bar chart dengan ggplot2, dengan masing-masing bar menunjukkan jumlah penjualan dari kategori produk yang berbeda. Tambahkan label angka di atas setiap batang untuk menunjukkan total penjualan.
- Distribusi Suhu per Negara Buat dataset yang mensimulasikan distribusi suhu bulanan untuk 5 negara selama 12 bulan. Tampilkan grafik line chart dengan ggplot2, yang menggambarkan perubahan suhu setiap bulan untuk masing-masing negara. Berikan label sumbu dan judul grafik yang sesuai, serta sesuaikan warna untuk masing-masing negara.