Mengenal paket quartomonothemer untuk ggplot2 dan gt

Alternatif tema monotone untuk visualisasi data di R
Author

Deri Siswara

Published

July 18, 2025

Pendahuluan

Dalam membuat presentasi atau laporan interaktif dengan Quarto, konsistensi tampilan sangat penting agar konten terlihat profesional. Paket quartomonothemer hadir untuk menyediakan tema monotone (satu warna dasar dengan aksen) yang mudah digunakan untuk. Paket ini dibuat oleh Kazuya Nagimoto. Paket ini mendukung berbagai jenis output Quarto, seperti:

  • Quarto Revealjs (slide)
  • ggplot2 (grafik)
  • gt (tabel)

Di artikel ini, kita akan melihat cara instalasi, konfigurasi, dan contoh penggunaan dengan data fiktif provinsi di Indonesia.

Instalasi

Paket quartomonothemer tersedia di R-universe:``

install.packages(
  "quartomonothemer",
  repos = "https://kazuyanagimoto.r-universe.dev"
)

Pastikan juga Anda menginstal paket pendukung:

install.packages(c("showtext", "ggplot2", "gt", "dplyr", "forcats"))
# Setup

library(dplyr)
library(ggplot2)
library(forcats)
library(gt)
library(gghighlight)
library(quartomonothemer)
library(showtext)

font_title <- "Josefin Sans"
font_text <- "Montserrat"
font_sans <- "Noto Sans" 
color_base <- "#009F8C"
color_base_light <- "#95DFD6"
color_accent <- "#B75C9D"
color_accent_light <- "#DBA6CC"
gray <- "#bebebe"
darkgray <- "#6d6d6d"

showtext_auto()

style_mono_quarto(
  font_title = font_title,
  font_text = font_text,
  font_sans = font_sans,
  color_base = color_base,
  color_accent = color_accent,
  color_link = color_accent,
  color_code = color_base,
  size_base = 30
)

Visualisasi 1

# Data fiktif provinsi Indonesia
provinsi_data <- data.frame(
  provinsi = c("DKI Jakarta", "Jawa Barat", "Jawa Tengah", 
               "Jawa Timur", "Sumatera Utara", 
               "Sulawesi Selatan", "Kalimantan Timur", "Bali", 
               "Riau", "Sumatera Selatan"),
  populasi_juta = c(10.6, 48.3, 34.3, 39.7, 14.8, 8.9, 3.8, 4.3, 6.4, 8.5),
  pdb_per_kapita = c(275, 85, 65, 70, 95, 55, 180, 120, 150, 80),
  pulau = c("Jawa", "Jawa", "Jawa", "Jawa", "Sumatera", 
            "Sulawesi", "Kalimantan", "Bali", "Sumatera", "Sumatera"),
  kategori_ekonomi = c("Tinggi", "Sedang", "Rendah", "Sedang", "Sedang",
                       "Rendah", "Tinggi", "Tinggi", "Tinggi", "Sedang"),
  laju_pertumbuhan = c(5.2, 5.8, 5.1, 5.4, 4.9, 6.2, 3.8, 6.8, 4.2, 5.5)
)

Visualisasi pertama akan menggunakan paket ggplot2 untuk membuat grafik provinsi dengan PDRB per kapita.

options(repr.plot.width = 10, repr.plot.height = 8)
provinsi_data |>
  arrange(pdb_per_kapita) |>
  slice_tail(n = 5) |>
  mutate(lbl = paste0("Rp ", pdb_per_kapita)) |>
  ggplot(aes(pdb_per_kapita, fct_reorder(provinsi, pdb_per_kapita))) +
  geom_col(fill = color_base) +
  geom_text(aes(label = lbl),
            hjust = 0, nudge_x = 8,
            size = 5, fontface = "bold", family = font_text) +
  scale_x_continuous(expand = expansion(mult = c(0, .2))) +
  labs(x = NULL, y = NULL, 
       title = "Top 5 Provinsi dengan PDB Per Kapita Tertinggi",
       subtitle = "Data Fiktif Tahun 2024 (dalam triliun rupiah)") +
  theme_quarto() +
  theme(panel.grid = element_blank(),
        axis.text.x = element_blank(),
        axis.ticks = element_blank(),
        plot.title = element_text(size = 20, margin = margin(b = 5)),
        plot.subtitle = element_text(size = 18, color = "gray50"),
        plot.margin = margin(20, 40, 20, 20)) +
  gghighlight(provinsi == "DKI Jakarta")

Visualisasi 2

Visualisasi kedua akan menggunakan paket gt untuk membuat tabel populasi.

# Install gtExtras jika belum ada
# install.packages("gtExtras")

# Load library yang diperlukan
library(gtExtras)

# Tabel populasi dengan visualisasi bar
gtf <-  provinsi_data |>
  arrange(desc(populasi_juta)) |>
  slice_head(n = 6) |>
  select(provinsi, populasi_juta, pulau) |>
  mutate(
    populasi_bar = populasi_juta
  ) |>
  gt() |>
  cols_label(
    provinsi = "Provinsi",
    populasi_juta = "Populasi (Juta Jiwa)",
    pulau = "Pulau",
    populasi_bar = "Visualisasi"
  ) |>
  fmt_number(columns = populasi_juta, decimals = 1) |>
  gt_plt_bar_pct(populasi_bar, fill = color_base, scaled = TRUE) |>
  tab_header(
    title = "Populasi Provinsi Terbesar di Indonesia",
    subtitle = "Data Fiktif Tahun 2024"
  ) |>
  opt_table_font(font = google_font(name = font_text)) |>
  gt_theme_quarto()

gt:::as.tags.gt_tbl(gtf)
Populasi Provinsi Terbesar di Indonesia
Data Fiktif Tahun 2024
Provinsi Populasi (Juta Jiwa) Pulau Visualisasi
Jawa Barat 48.3 Jawa
Jawa Timur 39.7 Jawa
Jawa Tengah 34.3 Jawa
Sumatera Utara 14.8 Sumatera
DKI Jakarta 10.6 Jawa
Sulawesi Selatan 8.9 Sulawesi