### Judul Tugas: Belajar Statistika dengan R - Bab 3
### nama: Diva Lathifah Zain ### 
### nim: 2502056042 ###
### matkul: statistik sosial ###
### output: html_document ###
  
  # BAB 3
  # MENYAJIKAN DATA DALAM GRAFIK


# Package ggplot2 digunakan pada beberapa contoh dalam guidebook.
# Jika belum terpasang, R akan memasangnya terlebih dahulu.


library(ggplot2)

knitr::opts_chunk$set(
  echo = TRUE,
  warning = FALSE,
  message = FALSE
)


# 1. Memplot Data dalam R (Scatter Plot)

data3.1 <- data.frame(
  jeniskelamin = c(
    rep("laki-laki", 10),
    rep("perempuan", 10)
  ),
  pendapatan = c(
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10
  ),
  pengeluaran = c(
    0.5, 0.9, 1.1, 2.0, 4.0, 5.0, 6.2, 5.5, 5.0, 4.5,
    0.7, 1.4, 2.8, 3.3, 4.3, 5.0, 6.7, 5.9, 5.7, 8.0
  )
)

write.csv(data3.1, "data3.1.csv", row.names = FALSE)

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.0
## 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)

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.

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

grafik <- ggplot(
  simpan,
  aes(pendapatan, pengeluaran)
) +
  geom_point(
    aes(color = jeniskelamin, shape = jeniskelamin)
  )

grafik

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


data3.2 <- data.frame(
  tahun = 2001:2007,
  jenis.barang.A = c(90, 110, 115, 130, 140, 155, 160),
  jenis.barang.B = c(85, 90, 105, 110, 120, 125, 130),
  jenis.barang.C = c(50, 55, 60, 65, 75, 80, 85)
)

write.csv(data3.2, "data3.2.csv", row.names = FALSE)

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


plot(Tahun, Jumlah_A)

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

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",
  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(
  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,
  type = "p",
  pch = 22,
  lty = 2,
  col = "green"
)

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
)

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

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
)

plot(
  Tahun,
  Jumlah_A,
  type = "o",
  col = "red",
  ylim = c(40, 180)
)

lines(
  Tahun,
  Jumlah_B,
  type = "o",
  col = "blue",
  lty = 2
)

lines(
  Tahun,
  Jumlah_C,
  type = "o",
  col = "green",
  lty = 2
)

legend(
  2001,
  160,
  c(
    "Jenis Barang A",
    "Jenis Barang B",
    "Jenis Barang C"
  ),
  cex = 0.8,
  col = c("red", "blue", "green"),
  lty = 1:3
)

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)

data3.3 <- data.frame(
  tahun = 2001:2007,
  jenis.barang.A = c(90, 110, 115, 130, 140, 155, 160)
)

write.csv(data3.3, "data3.3.csv", row.names = FALSE)

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

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)

data3.4 <- data.frame(
  Jenis.Kelamin = c(
    "Laki-Laki",
    "Laki-Laki",
    "Perempuan",
    "Perempuan"
  ),
  Hobi = c(
    "Olahraga",
    "Memasak",
    "Olahraga",
    "Memasak"
  ),
  Jumlah = c(90, 10, 25, 75)
)

write.csv(data3.4, "data3.4.csv", row.names = FALSE)

simpan = read.table(
  "data3.4.csv",
  header = TRUE,
  sep = ","
)

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

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

# 5. Menyajikan Data dengan Diagram Lingkaran

data3.5 <- data.frame(
  Produk = c("A", "B", "C", "D"),
  Jumlah = c(12, 5, 8, 20)
)

write.csv(data3.5, "data3.5.csv", row.names = FALSE)

simpan = read.table(
  "data3.5.csv",
  header = TRUE,
  sep = ","
)

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

colors = heat.colors(4)

legend(
  1,
  0.5,
  c(
    "Produk A",
    "Produk B",
    "Produk C",
    "Produk D"
  ),
  cex = 0.8,
  fill = colors
)

colors = c(
  "darkblue",
  "orange",
  "yellow",
  "red"
)

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

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 = paste0(Persen, "%")
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
)

# 6. Menyajikan Data dengan Histogram

IQ = c(
  111, 111, 111, 111, 111, 111, 111,
  110, 110, 110, 110, 110, 110, 110,
  112, 112, 112, 112, 112, 112, 112,
  113, 113,
  113, 114, 114, 114,
  115, 115, 115, 115,
  116, 116,
  117,
  90,
  91,
  92, 92,
  93, 93, 93,
  94, 94, 94, 94,
  95, 95, 95, 95, 95,
  96, 96, 96, 96,
  97, 97, 97, 97, 97, 97,
  98, 98, 98,
  101, 101, 101,
  102, 102,
  103,
  104,
  103,
  102,
  108,
  109,
  118
)

IQ_data = data.frame(IQ = IQ)

write.csv(
  IQ_data,
  "IQ.csv",
  row.names = FALSE
)

simpan = read.csv(
  "IQ.csv",
  header = TRUE
)

simpan
##     IQ
## 1  111
## 2  111
## 3  111
## 4  111
## 5  111
## 6  111
## 7  111
## 8  110
## 9  110
## 10 110
## 11 110
## 12 110
## 13 110
## 14 110
## 15 112
## 16 112
## 17 112
## 18 112
## 19 112
## 20 112
## 21 112
## 22 113
## 23 113
## 24 113
## 25 114
## 26 114
## 27 114
## 28 115
## 29 115
## 30 115
## 31 115
## 32 116
## 33 116
## 34 117
## 35  90
## 36  91
## 37  92
## 38  92
## 39  93
## 40  93
## 41  93
## 42  94
## 43  94
## 44  94
## 45  94
## 46  95
## 47  95
## 48  95
## 49  95
## 50  95
## 51  96
## 52  96
## 53  96
## 54  96
## 55  97
## 56  97
## 57  97
## 58  97
## 59  97
## 60  97
## 61  98
## 62  98
## 63  98
## 64 101
## 65 101
## 66 101
## 67 102
## 68 102
## 69 103
## 70 104
## 71 103
## 72 102
## 73 108
## 74 109
## 75 118
simpan_skor_IQ = simpan$IQ

hist(simpan_skor_IQ)

hist(
  simpan_skor_IQ,
  col = "lightblue"
)

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

hist(
  simpan_skor_IQ,
  col = "orange",
  ylim = c(0, 40),
  main = "Contoh Histogram",
  ylab = "Frekuensi",
  breaks = c(90, 100, 110, 120)
)

hist(
  simpan_skor_IQ,
  col = heat.colors(6),
  ylim = c(0, 30),
  main = "Contoh Histogram",
  ylab = "Frekuensi",
  breaks = c(
    90, 95, 100, 105, 110, 115, 120
  ),
  xlim = c(90, 125)
)

hist(
  simpan_skor_IQ,
  col = heat.colors(6),
  ylim = c(0, 30),
  main = "Contoh Histogram",
  ylab = "Frekuensi",
  breaks = c(
    90, 93, 96, 99, 102,
    105, 108, 111, 114,
    117, 120
  ),
  xlim = c(90, 125)
)

hist(
  simpan_skor_IQ,
  breaks = 6,
  col = heat.colors(6),
  ylim = c(0, 30),
  main = "Contoh Histogram",
  ylab = "Frekuensi",
  xlim = c(90, 125)
)

hist(
  simpan_skor_IQ,
  breaks = c(90, 117, 120),
  ylim = c(0, 50),
  xlim = c(90, 125),
  main = "Contoh Histogram",
  col = heat.colors(2)
)

hist(
  simpan_skor_IQ,
  breaks = c(90, 117, 120),
  ylim = c(0, 80),
  xlim = c(90, 125),
  main = "Contoh Histogram",
  col = heat.colors(2),
  freq = TRUE
)
## Warning in plot.histogram(r, freq = freq1, col = col, border = border, angle =
## angle, : the AREAS in the plot are wrong -- rather use 'freq = FALSE'

hist(
  simpan_skor_IQ,
  breaks = c(90, 92, 97, 117, 120),
  ylim = c(0, 80),
  xlim = c(90, 125),
  main = "Contoh Histogram",
  col = heat.colors(4),
  freq = TRUE
)
## Warning in plot.histogram(r, freq = freq1, col = col, border = border, angle =
## angle, : the AREAS in the plot are wrong -- rather use 'freq = FALSE'

ggplot(
  data = simpan,
  aes(IQ)
) +
  geom_histogram(
    breaks = c(
      90, 95, 100, 105,
      110, 115, 120
    ),
    col = "darkblue",
    fill = heat.colors(6)
)

    ggplot(
  data = simpan,
  aes(IQ)
) +
  geom_histogram(
    breaks = c(
      90, 95, 100, 105,
      110, 115, 120
    ),
    col = "red",
    aes(fill = after_stat(count))
  ) +
  labs(
    title = "Contoh Histogram",
    x = "IQ",
    y = "Jumlah"
  ) +
  xlim(c(90, 125)) +
  ylim(c(0, 20))
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_bar()`).

  scale_fill_gradient(
    "count",
    low = "green",
    high = "red"
  )
## <ScaleContinuous>
##  Range:  
##  Limits:    0 --    1
### SELESAIIIIIIIIII. Bab 3 Statistik is DONEEE ####