Catatan: pada buku, plot.new() dipakai di RStudio untuk membersihkan jendela grafik. Di R Markdown tidak diperlukan (malah menghasilkan gambar kosong), jadi baris itu tidak disertakan. Hasil grafiknya tetap sama.

0. Menyiapkan Data

Buku memakai file data3.1.csv sampai data3.4.csv. Bagian ini membuat file tersebut di folder kerja, jika belum ada.

if (!file.exists("data3.1.csv")) {
  writeLines(c(
    "jeniskelamin,pendapatan,pengeluaran",
    paste("laki-laki", 1:10,
          c(0.5, 0.9, 1.1, 2, 4, 5, 6.2, 5.5, 5.8, 4.5), sep = ","),
    paste("perempuan", 1:10,
          c(0.7, 1.4, 2.8, 3.3, 4.3, 5, 6.7, 5.9, 5.7, 8), sep = ",")
  ), "data3.1.csv")
}

if (!file.exists("data3.2.csv")) {
  writeLines(c(
    "tahun,jenis.barang.A,jenis.barang.B,jenis.barang.C",
    "2001,90,85,50",
    "2002,110,90,55",
    "2003,115,105,60",
    "2004,130,110,65",
    "2005,140,120,75",
    "2006,155,125,80",
    "2007,160,130,85"
  ), "data3.2.csv")
}

if (!file.exists("data3.3.csv")) {
  writeLines(c(
    "tahun,jenis.barang.A",
    "2001,90", "2002,110", "2003,115", "2004,130",
    "2005,140", "2006,155", "2007,160"
  ), "data3.3.csv")
}

if (!file.exists("data3.4.csv")) {
  writeLines(c(
    "Jenis.Kelamin,Hobi,Jumlah",
    "Laki-Laki,Olahraga,90",
    "Laki-Laki,Memasak,10",
    "Perempuan,Olahraga,25",
    "Perempuan,Memasak,75"
  ), "data3.4.csv")
}

1. Memplot Data dalam R (Scatter Plot)

1.1 Membaca data dan plot dasar

simpan=read.table("data3.1.csv",header=TRUE, sep=",") #membaca data
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")

1.2 Memplot variabel Pendapatan dan Pengeluaran

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

1.3 Scatter plot dengan qplot (ggplot2)

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")

1.4 Membedakan jenis kelamin dengan warna dan bentuk

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

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

1.5 Scatter plot dengan ggplot

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

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

1.6 Mengatur warna, bentuk, panel, dan garis bantu

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. Menyajikan Data dengan Grafik Garis

2.1 Membaca data

simpan=read.table("data3.2.csv",header=TRUE, sep=",") #membaca data
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

2.2 Grafik untuk barang A

plot(Tahun,Jumlah_A)

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

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

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

2.3 Menambah garis barang B dan C

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")

2.4 Mengatur bentuk titik (pch), jenis garis (lty), dan type

plot(Tahun,Jumlah_A, type="o", col="red", ylim=c(40,180))
lines(Tahun, Jumlah_B, type="o", pch=22, 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, pch=22, lty=2, type="o", col="green")

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

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

2.5 Menambah judul grafik

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))
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)

2.6 Menambah legenda

Total = Jumlah_A
plot(Tahun,Total, type="o", col="red", ylim=c(40,180))
lines(Tahun, Jumlah_B, type="o", col="blue")
lines(Tahun, Jumlah_C, type="o", col="green")
legend(2001,160,c("Jenis Barang A", "Jenis Barang B", "Jenis Barang C"), cex=0.8, col=c("red","blue","green"), pch=21)
title(main="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))
lines(Tahun, Jumlah_B, type="o", col="blue")
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)

Total = Jumlah_A
plot(Tahun,Total, type="o", col="red", ylim=c(40,180))
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)

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)

2.7 Variasi jenis garis (type “s” dan “l”)

Total = Jumlah_A
plot(Tahun,Total, type="o", col="red", ylim=c(40,180), lty=23)
lines(Tahun, Jumlah_B, type="s", 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)

Total = Jumlah_A
plot(Tahun,Total, type="o", col="red", ylim=c(40,180), lty=23)
lines(Tahun, Jumlah_B, type="l", 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)

Total = Jumlah_A
plot(Tahun,Total, type="o", col="red", ylim=c(40,180))
lines(Tahun, Jumlah_B, type="l", 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)

2.8 Mengubah label sumbu horizontal

Total = Jumlah_A
plot(Tahun,Total, type="o", col="red", ylim=c(40,180), xaxt="n")
Axis(at=2001:2007, side = 1, labels = c("A","B","C","D","E","F","G"))
lines(Tahun, Jumlah_B, type="l", 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)

Total = Jumlah_A
plot(Tahun,Total, type="o", col="red", ylim=c(40,180), xaxt="n")
Axis(at=2001:2007, side = 1, labels = c("Tahun 1","Tahun 2","Tahun 3","Tahun 4","Tahun 5","Tahun 6","Tahun 7"))
lines(Tahun, Jumlah_B, type="l", 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)

Total = Jumlah_A
plot(Tahun,Total, type="o", col="red", ylim=c(40,180), xaxt="n")
Axis(at=2001:2007, side = 3, labels = c("Tahun 1","Tahun 2","Tahun 3","Tahun 4","Tahun 5","Tahun 6","Tahun 7"))
lines(Tahun, Jumlah_B, type="l", 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. Menyajikan Data dengan Grafik Batang (Bagian Pertama)

3.1 Grafik batang dengan barplot

simpan=read.table("data3.3.csv",header=TRUE, sep=",") #membaca data
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) )

3.2 Grafik batang dengan ggplot2

library(ggplot2)
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. Menyajikan Data dengan Grafik Batang (Bagian Kedua)

4.1 Membaca data dan barplot

simpan=read.table("data3.4.csv",header=TRUE, sep=",") #membaca data
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") )

4.2 Grafik batang dengan data.frame dan ggplot2

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
library(ggplot2)
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")

# Pada buku: guides(fill=FALSE). Di ggplot2 versi baru ditulis guides(fill="none")
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 XYZ")

4.3 Grafik batang bertumpuk dan berdampingan

dat = 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))

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

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

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