Fungsi Grafik Lanjutan dalam R

1. Scatter Plot: Hubungan Ozone dan Temperatur

# Data ozone dan temperatur
ozone <- c(2.29, 2.62, 2.84, 2.67, 2, 2.51, 2.22, 2.41, 3.44, 3.30)
temp <- c(74, 62, 65, 59, 61, 69, 66, 68, 67, 72)

# Scatter plot ozone vs temperatur
plot(ozone, temp, main = "Ozone vs Temperature", xlab = "Ozone", ylab = "Temperature")

Penjelasan:

  • ozone dan temp adalah dua vektor data yang merepresentasikan nilai ozon dan suhu.

  • plot() digunakan untuk membuat scatter plot, yaitu grafik sebar antara dua variabel numerik.

  • Grafik ini bertujuan untuk melihat hubungan antara kadar ozon dan temperatur.

2. Plot Data Acak dan Time Series

# Data acak dari distribusi normal
x <- rnorm(100)
plot(x, main = "Random Normal Data")

# Buka jendela grafik baru (khusus Windows)
#win.graph()

# Konversi menjadi time series dan plot
y <- ts(x)
plot(y, main = "Time Series dari Data Acak")

Penjelasan:

  • rnorm(100) menghasilkan 100 data acak dari distribusi normal.

  • plot(x) menampilkan grafik data acak tersebut.

  • win.graph() membuka jendela grafik baru di Windows (tidak wajib di RStudio).

  • ts(x) mengubah data menjadi time series, lalu diplot untuk melihat pola waktu.

3. Normal Q-Q Plot untuk Produk

# Data produk
produk1 <- c(6.1,5.8,7,5.8,6,1,6.4,6.1,6,5.9,5.8)
produk2 <- c(5.9,5.7,6.1,5.9,5.8,5.6,5.6,5.9,5.7,5.6)

# Q-Q Plot
qqnorm(produk1, main = "Q-Q Plot Produk 1")

qqnorm(produk2, main = "Q-Q Plot Produk 2")
qqline(produk2, col = 6)

Penjelasan:

  • Data produk1 dan produk2 merepresentasikan dua jenis produk.

  • qqnorm() membuat Q-Q plot untuk mengecek apakah data berdistribusi normal.

  • qqline() menambahkan garis referensi normal.

  • Jika titik-titik Q-Q plot mengikuti garis, berarti data mendekati distribusi normal.

4. 3D Surface Plot dan Kontur

# Grid nilai
y <- seq(-10, 10, 0.5)
x <- seq(-10, 10, 0.5)

# Matriks z
z <- outer(x^2, y^2, "+")

# 3D plot
persp(x, y, z, main = "3D Plot Default")

persp(x, y, z, theta = 45, phi = 30, col = "cyan", main = "3D Plot with Rotation")

# Plot image dan contour
image(x, y, z, main = "Image Plot")

contour(x, y, z, main = "Contour Plot")

Penjelasan:

  • x dan y adalah grid dari -10 hingga 10.

  • outer(x^2, y^2, "+") menghasilkan matriks z dari fungsi z = x^2 + y^2

  • persp() membuat grafik 3D dari fungsi permukaan.

  • image() menampilkan peta warna (heatmap).

  • contour() menampilkan kontur level dari fungsi permukaan.

5. Plot Statistik Dasar

# Histogram
hist(x, main = "Histogram Data x")

# Scatter plot
plot(x, main = "Scatterplot Data x")

# Q-Q plot
qqnorm(x, main = "Q-Q Plot Data x")

# QQ plot dengan library car
library(car)
## Loading required package: carData
qqplot(x, x, main = "QQ Plot (car package)")

# Boxplot
boxplot(x, main = "Boxplot Data x")

# Density plot
plot(density(x), main = "Density Plot (Normal)", type = "l")

Penjelasan:

  • hist(x) membuat histogram untuk melihat distribusi frekuensi.

  • plot(x) scatterplot dari data acak.

  • qqnorm(x) menilai normalitas distribusi data dengan Q-Q plot.

  • qqplot(x, x) membandingkan dua distribusi (dalam hal ini sama).

  • boxplot(x) menunjukkan persebaran data dan pencilan (outlier).

  • plot(density(x)) menampilkan kurva kerapatan data (estimasi distribusi).

6. LATIHAN 1 – Fungsi Bersusun f(y)

# Definisi fungsi bersusun f(y)
f <- function(y) {
  ifelse(y >= -pi & y <= -pi/2, y + pi,
         ifelse(y >= -pi/2 & y <= pi/2, pi/2,
                ifelse(y >= pi/2 & y <= pi, pi - y, NA)))
}

# Buat grid y dan hitung f(y)
y <- seq(-pi, pi, length.out = 500)
fy <- f(y)

# Plot f(y)
plot(y, fy, type = "l", lwd = 2, col = "blue",
     main = "Plot Fungsi f(y)",
     xlab = "y", ylab = "f(y)")
grid()

Penjelasan:

  • Fungsi f(y) adalah fungsi piecewise (fungsi bersusun) berdasarkan nilai y.

  • ifelse() digunakan untuk menentukan nilai fungsi berdasarkan interval.

  • Nilai y diambil dari -π hingga π.

  • Grafik hasil menunjukkan bentuk fungsi bersusun dalam satu plot garis.

7. LATIHAN 2 – Plot exp(x) dan exp(1/x)

# Interval x dari 0.001 sampai 2
x <- seq(0.001, 2, length.out = 500)

# Fungsi
y1 <- exp(x)
y2 <- exp(1 / x)

# Plot exp(x)
plot(x, y1, type = "l", col = "blue", lwd = 2,
     xlab = "x", ylab = "y", main = "Plot exp(x) dan exp(1/x) pada [0,2]")

# Tambahkan exp(1/x)
lines(x, y2, col = "red", lwd = 2)

# Legenda
legend("topright", legend = c("exp(x)", "exp(1/x)"),
       col = c("blue", "red"), lwd = 2)
grid()

Penjelasan:

  • x didefinisikan dari 0.001 ke 2 agar 1/x tidak error.

  • y1 = exp(x) dan y2 = exp(1/x) adalah dua fungsi eksponensial yang dibandingkan.

  • plot() digunakan untuk menggambar fungsi exp(x).

  • lines() menambahkan kurva exp(1/x) ke grafik yang sama.

  • legend() memberikan keterangan kurva agar lebih informatif.

  • Grafik ini membandingkan dua fungsi eksponensial pada interval yang sama.