# ==========================================
# BAB 3: MENYAJIKAN DATA DALAM BENTUK GRAFIK
# ==========================================
# --- 1. MEMBACA DATA 3.1 (Scatter Plot) ---
simpan = read.table("data3.1.csv", header=TRUE, sep=",")
simpan
## jeniskelamin pendapatan pengeluaran
## 1 laki-laki 1 0.5
## 2 laki-laki 2 0.9
## 3 laki-laki 3 1.1
## 4 laki-laki 4 2.0
## 5 laki-laki 5 4.0
## 6 laki-laki 6 5.0
## 7 laki-laki 7 6.2
## 8 laki-laki 8 5.5
## 9 laki-laki 9 5.8
## 10 laki-laki 10 4.5
## 11 perempuan 1 0.7
## 12 perempuan 2 1.4
## 13 perempuan 3 2.8
## 14 perempuan 4 3.3
## 15 perempuan 5 4.3
## 16 perempuan 6 5.0
## 17 perempuan 7 6.7
## 18 perempuan 8 5.9
## 19 perempuan 9 5.7
## 20 perempuan 10 8.0
plot(simpan[2:3], main="Pendapatan dan Pengeluaran per-Bulan, dalam Jutaan Rupiah")

Pendapatan = simpan$pendapatan
Pengeluaran = simpan$pengeluaran
plot(Pendapatan, Pengeluaran)

library(ggplot2)
PENDAPATAN = simpan$pendapatan
PENGELUARAN = simpan$pengeluaran
qplot(PENDAPATAN, PENGELUARAN, main="Pendapatan dan Pengeluaran per-Bulan, dalam jutaan", xlab="Pendapatan per-Bulan", ylab="Pengeluaran per-Bulan")
## Warning: `qplot()` was deprecated in ggplot2 3.4.0.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

jenis = simpan$jeniskelamin
qplot(PENDAPATAN, PENGELUARAN, main="Pendapatan dan Pengeluaran per-Bulan, dalam jutaan", xlab="Pendapatan", ylab="Pengeluaran", color=jenis, shape=jenis)

ggplot(simpan, aes(pendapatan, pengeluaran)) + geom_point()

ggplot(simpan, aes(pendapatan, pengeluaran)) + geom_point(aes(color = jenis, shape = jenis))

grafik <- ggplot(simpan, aes(pendapatan, pengeluaran)) + geom_point(aes(color = jenis, shape = jenis))
grafik + scale_colour_manual(values = c("blue", "orange"))

grafik + scale_shape_manual(values = c(16, 5))

grafik + scale_colour_manual(values = c("blue", "orange")) + scale_shape_manual(values = c(5, 5))

grafik + facet_grid(.~jeniskelamin)

grafik + facet_grid(.~jeniskelamin) + scale_colour_manual(values = c("blue", "orange"))

grafik + geom_vline(xintercept = 2.5)

grafik + geom_vline(xintercept = 2.5) + geom_vline(xintercept = 5)

grafik + geom_vline(xintercept = 1:5)

grafik + geom_vline(xintercept = c(2.5, 5, 7.5))

grafik + geom_vline(xintercept = c(2.5, 5, 7.5), colour="green", linetype="longdash")

grafik + geom_vline(xintercept = c(2.5, 5, 7.5), colour="green", linetype="longdash") + geom_hline(yintercept = c(2, 4, 6), colour="red", linetype="longdash")

# --- 2. MEMBACA DATA 3.2 (Grafik Garis) ---
simpan = read.table("data3.2.csv", header=TRUE, sep=",")
simpan
## tahun jenis.barang.A jenis.barang.B jenis.barang.C
## 1 2001 90 85 50
## 2 2002 110 90 55
## 3 2003 115 105 60
## 4 2004 130 110 65
## 5 2005 140 120 75
## 6 2006 155 125 80
## 7 2007 160 130 85
Tahun = simpan$tahun
Jumlah_A = simpan$jenis.barang.A
Jumlah_B = simpan$jenis.barang.B
Jumlah_C = simpan$jenis.barang.C
Jumlah_A
## [1] 90 110 115 130 140 155 160
Jumlah_B
## [1] 85 90 105 110 120 125 130
Jumlah_C
## [1] 50 55 60 65 75 80 85
plot(Tahun, Jumlah_A)

plot(Tahun, Jumlah_A, type = "o")

plot(Tahun, Jumlah_A, type = "o", col = "red")
lines(Tahun, Jumlah_B, type = "o", col = "blue")

plot(Tahun, Jumlah_A, type = "o", col = "red", ylim = c(70, 180))
lines(Tahun, Jumlah_B, type = "o", col = "blue")

plot(Tahun, Jumlah_A, type = "o", col = "red", ylim = c(40, 180))
lines(Tahun, Jumlah_B, type = "o", col = "blue")
lines(Tahun, Jumlah_C, type = "o", col = "green")

plot(Tahun, Jumlah_A, type = "o", col = "red", ylim = c(40, 180))
lines(Tahun, Jumlah_B, type = "o", pch = 22, lty=2, col = "blue")
lines(Tahun, Jumlah_C, type = "o", col = "green")

plot(Tahun, Jumlah_A, type = "o", pch = 22, lty = 2, col = "red", ylim = c(40, 180))
lines(Tahun, Jumlah_B, type = "o", pch = 22, lty = 2, col = "blue")
lines(Tahun, Jumlah_C, type = "o", pch = 22, lty = 2, col = "green")

plot.new()
plot(Tahun, Jumlah_A, type="o", col="red", ylim=c(40, 180))
lines(Tahun, Jumlah_B, type="o", col="blue")
lines(Tahun, Jumlah_C, type="o", col="green")
title(main="Data Penjualan Barang A, B, C, dari Tahun 2001-2007", col.main="red", font.main=4)

Total = Jumlah_A
plot(Tahun, Total, type="o", col="red", ylim=c(40, 180), lty=23)
lines(Tahun, Jumlah_B, type="o", col="blue", lty=23)
lines(Tahun, Jumlah_C, type="o", col="green", lty=23)
legend(2001, 160, c("Jenis Barang A", "Jenis Barang B", "Jenis Barang C"), cex=0.8, col=c("red", "blue", "green"), lty=30)
title(main="Penjualan Barang A, B, C, dari Tahun 2001-2007", col.main="red", font.main=4)

# --- 3. MEMBACA DATA 3.3 (Diagram Batang) ---
simpan = read.table("data3.3.csv", header=TRUE, sep=",")
simpan
## tahun jenis.barang.A
## 1 2001 90
## 2 2002 110
## 3 2003 115
## 4 2004 130
## 5 2005 140
## 6 2006 155
## 7 2007 160
Tahun = simpan$tahun
Jumlah_A = simpan$jenis.barang.A
barplot(Jumlah_A, Tahun)

barplot(Jumlah_A, Tahun, main="Penjualan Barang Jenis A dari Tahun 2001-2007", xlab="Tahun",
ylab="Jumlah Barang yang Terjual", names.arg=c("2001", "2002", "2003", "2004", "2005", "2006", "2007"))

barplot(Jumlah_A, Tahun, main="Penjualan Barang Jenis A dari Tahun 2001-2007", xlab="Tahun",
ylab="Jumlah Barang yang Terjual", names.arg=c("2001", "2002", "2003", "2004", "2005", "2006", "2007"), border="blue")

barplot(Jumlah_A, Tahun, main="Penjualan Barang Jenis A dari Tahun 2001-2007", xlab="Tahun",
ylab="Jumlah Barang yang Terjual", names.arg=c("2001", "2002", "2003", "2004", "2005", "2006", "2007"), border="red")

barplot(Jumlah_A, Tahun, main="Penjualan Barang Jenis A dari Tahun 2001-2007", xlab="Tahun",
ylab="Jumlah Barang yang Terjual", names.arg=c("2001", "2002", "2003", "2004", "2005", "2006", "2007"),
border="green", density=c(10, 20, 30, 40, 50, 60, 70))

ggplot(data=simpan, aes(x=Tahun, y=Jumlah_A)) + geom_bar(stat="identity")

ggplot(data=simpan, aes(x=Tahun, y=Jumlah_A)) + geom_bar(stat="identity", fill="darkblue")

ggplot(data=simpan, aes(x=Tahun, y=Jumlah_A)) + geom_bar(stat="identity", fill=heat.colors(7))

# --- 4. MEMBACA DATA 3.4 (Hubungan Jenis Kelamin & Hobi) ---
simpan = read.table("data3.4.csv", header=TRUE, sep=",")
## Warning in read.table("data3.4.csv", header = TRUE, sep = ","): incomplete
## final line found by readTableHeader on 'data3.4.csv'
simpan
## Jenis.Kelamin Hobi Jumlah
## 1 Laki-Laki Olahraga 90
## 2 Laki-Laki Memasak 10
## 3 Perempuan Olahraga 25
## 4 Perempuan Memasak 75
frekuensi = c(90, 10, 25, 75)
barplot(t(matrix(frekuensi, ncol=2, byrow=TRUE, dimnames=list(c("Laki-laki", "Perempuan"), c("Olahraga", "Memasak")))),
main="Hubungan antara Jenis Kelamin dan Hobi", xlab="Jenis Kelamin",
col=c("darkblue", "orange"), beside=TRUE, ylim=c(0, 150), legend.text=TRUE,
args.legend=list(x="topright"))

frekuensi2 = c(2, 12, 16, 6)
barplot(frekuensi2, ylim=c(0, 20), main="Jumlah Mahasiswa yang Memperoleh Nilai A, B, C, dan D, untuk Matakuliah Matematika 1", names.arg=c("A", "B", "C", "D"), ylab="Jumlah Mahasiswa",
xlab="Nilai Mahasiswa", cex.names=0.8, col=c("green", "yellow", "orange", "red"))

dat = data.frame(jenis_kelamin=factor(c("Laki-laki", "Perempuan"), levels=c("Laki-laki", "Perempuan")), total=c(20, 70))
dat
## jenis_kelamin total
## 1 Laki-laki 20
## 2 Perempuan 70
ggplot(data=dat, aes(x=jenis_kelamin, y=total))+geom_bar(stat="identity")

ggplot(data=dat, aes(x=jenis_kelamin, y=total, fill=jenis_kelamin))+geom_bar(stat="identity")

ggplot(data=dat, aes(x=jenis_kelamin, y=total, fill=jenis_kelamin))+geom_bar(stat="identity") + guides(fill="none")

ggplot(data=dat, aes(x=jenis_kelamin, y=total, fill=jenis_kelamin))+geom_bar(stat="identity")+xlab("Jenis Kelamin") +ylab("Jumlah Mahasiswa") + ggtitle("Universitas Lambung Mangkurat")

dat2 = data.frame(jenis_kelamin=factor(c("Laki-laki", "Laki-laki", "Perempuan", "Perempuan")),
hobi=factor(c("Olahraga", "Memasak", "Olahraga", "Memasak"), levels=c("Olahraga", "Memasak")), total=c(80, 20, 40, 60))
dat2
## jenis_kelamin hobi total
## 1 Laki-laki Olahraga 80
## 2 Laki-laki Memasak 20
## 3 Perempuan Olahraga 40
## 4 Perempuan Memasak 60
ggplot(data=dat2, aes(x=hobi, y=total, fill=jenis_kelamin)) + geom_bar(stat="identity") +
xlab("Hobi Mahasiswa") + ylab("Jumlah Mahasiswa") + ggtitle("Universitas Lambung Mangkurat") + geom_text(aes(y=total/1.3, label=total), position="stack")

ggplot(data=dat2, aes(x=hobi, y=total, fill=jenis_kelamin)) + geom_bar(stat="identity",
position=position_dodge()) + xlab("Hobi Mahasiswa") + ylab("Jumlah Mahasiswa") + ggtitle("Universitas Lambung Mangkurat")

ggplot(data=dat2, aes(x=hobi, y=total, fill=jenis_kelamin)) + geom_bar(stat="identity",
position=position_dodge()) + xlab("Hobi Mahasiswa") + ylab("Jumlah Mahasiswa") + ggtitle("Universitas Lambung Mangkurat") + geom_text(aes(y=total/4, label=total), position=position_dodge(width=1))

# --- 5. MEMBACA DATA 3.5 (Diagram Lingkaran) ---
simpan = read.table("data3.5.csv", header=TRUE, sep=",")
## Warning in read.table("data3.5.csv", header = TRUE, sep = ","): incomplete
## final line found by readTableHeader on 'data3.5.csv'
simpan
## Produk Jumlah
## 1 A 12
## 2 B 5
## 3 C 8
## 4 D 20
pie(simpan$Jumlah, labels=simpan$Produk, main="Data Penjualan Produk A, B, C, dan D")

pie(simpan$Jumlah, labels=simpan$Produk, main="Data Penjualan Produk A, B, C, dan D", col=heat.colors(4))

pie(simpan$Jumlah, labels=simpan$Jumlah, main="Data Penjualan Produk A, B, C, dan D", col=heat.colors(4))
colors = heat.colors(4)
legend(1, 0.5, c("Produk A", "Produk B", "Produk C", "Produk D"), cex=0.8, fill=colors)

Persen = round(simpan$Jumlah/sum(simpan$Jumlah)*100, 4)
Persen = paste(Persen, "%", sep="")
pie(simpan$Jumlah, labels=Persen, main="Data Penjualan Produk A, B, C, dan D",
col=c("darkblue", "orange", "yellow", "red"))
colors = c("darkblue", "orange", "yellow", "red")
legend(1, 0.5, c("Produk A", "Produk B", "Produk C", "Produk D"), cex=0.8, fill=colors)

Jumlah = simpan$Jumlah
Produk = simpan$Produk
pie_chart = ggplot(simpan, aes(x="", y=Jumlah, fill=Produk)) + geom_bar(width=1, stat="identity") + coord_polar("y", start=0)
pie_chart

blank_theme = theme(
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
panel.border = element_blank(),
panel.grid = element_blank(),
axis.ticks = element_blank(),
plot.title = element_text(size=14, face="bold")
)
library(scales)
pie_chart + blank_theme + geom_text(aes(y=Jumlah/4 + c(0, cumsum(Jumlah)[-length(Jumlah)])), label=Jumlah, size=5)

Persen2 = round(simpan$Jumlah/sum(simpan$Jumlah)*100, 2)
Persen2 = paste(Persen2, "%", sep="")
pie_chart + blank_theme + geom_text(aes(y=Jumlah/4 + c(0, cumsum(Jumlah)[-length(Jumlah)])), label=Persen2, size=5) + scale_fill_manual(values=c(heat.colors(4)))

# --- 6. MEMBACA DATA IQ (Histogram yang Aman dari Error) ---
simpan = read.csv("IQ.csv", header = TRUE)
simpan_skor_IQ = simpan$IQ
# Cek rentang data agar Anda tahu batas amannya
print(range(simpan_skor_IQ, na.rm = TRUE))
## [1] 90 133
# Histogram Dasar (Otomatis menyesuaikan data)
hist(simpan_skor_IQ, col = "lightblue")

hist(
simpan_skor_IQ,
col = "darkblue",
ylim = c(0, 40),
main = "Contoh Histogram",
ylab = "Frekuensi"
)

# Jika ingin menggunakan breaks manual, pastikan mencakup seluruh nilai min dan max data Anda.
# Contoh menggunakan rentang otomatis yang aman:
min_val = floor(min(simpan_skor_IQ, na.rm = TRUE))
max_val = ceiling(max(simpan_skor_IQ, na.rm = TRUE))
hist(
simpan_skor_IQ,
col = heat.colors(6),
main = "Contoh Histogram",
ylab = "Frekuensi",
breaks = seq(min_val, max_val, length.out = 8),
xlim = c(min_val, max_val)
)

# Histogram dengan ggplot2 yang aman
ggplot(data = simpan, aes(x = IQ)) +
geom_histogram(
col = "darkblue",
fill = "orange",
bins = 8
) +
labs(title = "Contoh Histogram", x = "IQ", y = "Jumlah")
