Soal Latihan

Buatlah sebuah histogram dengan label yang sesuai untuk nilai (value) dari orders yang diterima dari negara-negara Nordic (Denmark, Finland, Norway, Sweden)! Berikan penjelasan dari koneksi dan pengambilan data sampai diperoleh visualisasinya!

Koneksi dan Pengambilan Data

library(DBI)
## Warning: package 'DBI' was built under R version 4.5.2
library(odbc)
## Warning: package 'odbc' was built under R version 4.5.2
con <- DBI::dbConnect(odbc::odbc(),
                       Driver    = "MySQL ODBC 8.0 ANSI Driver", 
                       Server    = "127.0.0.1",
                       Database  = "classicmodels",
                       UID       = "root",
                       PWD       = "chal10nsha",
                       Port      = 3306)

Setelah koneksi terjalin, maka dapat dilanjutkan pengambilan data dari akan dataset yang digunakan. Disini karena akan membuat histogram untuk nilai dari orders dari beberapa negara maka dilakukan pengambilan data sebagai berikut.

dt1<-dbGetQuery(con,"SELECT 
        o.orderNumber, 
        c.country,
        SUM(od.quantityOrdered * od.priceEach) AS total_value 
          FROM orders o 
          JOIN orderdetails od ON o.orderNumber= od.orderNumber 
                JOIN customers c ON o.customerNumber=c.customerNumber
                WHERE c.country IN ('Denmark', 'Finland', 'Norway','Sweden') 
                GROUP BY o.orderNumber")
dt1
##    orderNumber  country total_value
## 1        10103   Norway    50218.95
## 2        10105  Denmark    53959.21
## 3        10112   Sweden     7674.94
## 4        10141  Finland    29716.86
## 5        10151  Finland    32723.04
## 6        10155  Finland    37602.48
## 7        10158   Norway     1491.38
## 8        10161  Denmark    36164.46
## 9        10167   Sweden    44167.09
## 10       10181 Norway      55069.55
## 11       10188 Norway      29954.91
## 12       10238  Denmark    28211.70
## 13       10239  Finland    16212.59
## 14       10247  Finland    28394.54
## 15       10256  Denmark     4710.73
## 16       10284 Norway      32260.16
## 17       10289 Norway      12538.01
## 18       10291   Sweden    48809.90
## 19       10299  Finland    34341.08
## 20       10301 Norway      36798.88
## 21       10309   Norway    17876.32
## 22       10314  Denmark    53745.34
## 23       10320   Sweden    16799.03
## 24       10325   Norway    34638.14
## 25       10326   Sweden    19206.68
## 26       10327  Denmark    20564.86
## 27       10334   Sweden    23014.17
## 28       10363  Finland    45785.34
## 29       10373  Finland    46770.52
## 30       10377  Finland    23602.90
## 31       10389   Sweden    27966.54
## 32       10406  Denmark    21638.62

Setelah mendapatkan data yang diinginkan dilanjutkan membuat histogram dengan package ggplot dan fungsi geom_histogram untuk melihat distribusi frekuensi dari data total value

# Membuat histogram dengan label yang informatif menggunakan labs()
library(ggplot2)
library(scales)

ggplot(dt1, aes(x = total_value)) +
  geom_histogram(aes(fill = after_stat(count)), bins = 15, color = "white") +
  stat_bin(bins = 15, geom = "text", aes(label = after_stat(count)), vjust = -0.5, size = 3) +
  scale_fill_gradient(low = "#132B43", high = "#56B1F7") +
  scale_x_continuous(labels = label_dollar()) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.15))) +
  theme_minimal() +
  labs(title = "Distribusi Nilai Pesanan di Negara Nordic",
       subtitle = "Negara: Denmark, Finland, Norway, Sweden",
       x = "Nilai Pesanan (USD)",
       y = "Frekuensi (Jumlah Order)") +
  theme(legend.position = "none")

Berikut adalah histogram untuk nilai (value) dari orders yang diterima dari negara-negara Nordic (Denmark, Finland, Norway, Sweden)