# Data PDRB Atas Dasar Harga Berlaku 38 Provinsi, 2024 (miliar rupiah)
pdrb <- data.frame(
provinsi = c("Aceh","Sumatera Utara","Sumatera Barat","Riau","Jambi",
"Sumatera Selatan","Bengkulu","Lampung","Kep. Bangka Belitung","Kep. Riau",
"DKI Jakarta","Jawa Barat","Jawa Tengah","DI Yogyakarta","Jawa Timur","Banten",
"Bali","Nusa Tenggara Barat","Nusa Tenggara Timur",
"Kalimantan Barat","Kalimantan Tengah","Kalimantan Selatan",
"Kalimantan Timur","Kalimantan Utara",
"Sulawesi Utara","Sulawesi Tengah","Sulawesi Selatan","Sulawesi Tenggara",
"Gorontalo","Sulawesi Barat",
"Maluku","Maluku Utara","Papua Barat","Papua",
"Papua Selatan","Papua Tengah","Papua Pegunungan","Papua Barat Daya"),
pulau = c(rep("Sumatera", 10),
rep("Jawa", 6),
rep("Bali-Nusra", 3),
rep("Kalimantan", 5),
rep("Sulawesi", 6),
rep("Maluku-Papua", 8)),
pdrb_miliar = c(243000, 1146000, 333000, 1112000, 322000,
663000, 104000, 483000, 107000, 352000,
3679000, 2823000, 1817000, 193000, 3168000, 873000,
299000, 182000, 132000,
300000, 223000, 287000, 858000, 147000,
187000, 377000, 696000, 189000, 54000, 64000,
63000, 95000, 113000, 320000,
38000, 45000, 25000, 32000)
)
str(pdrb)
## 'data.frame': 38 obs. of 3 variables:
## $ provinsi : chr "Aceh" "Sumatera Utara" "Sumatera Barat" "Riau" ...
## $ pulau : chr "Sumatera" "Sumatera" "Sumatera" "Sumatera" ...
## $ pdrb_miliar: num 243000 1146000 333000 1112000 322000 ...
head(pdrb, 10)
## provinsi pulau pdrb_miliar
## 1 Aceh Sumatera 243000
## 2 Sumatera Utara Sumatera 1146000
## 3 Sumatera Barat Sumatera 333000
## 4 Riau Sumatera 1112000
## 5 Jambi Sumatera 322000
## 6 Sumatera Selatan Sumatera 663000
## 7 Bengkulu Sumatera 104000
## 8 Lampung Sumatera 483000
## 9 Kep. Bangka Belitung Sumatera 107000
## 10 Kep. Riau Sumatera 352000
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
top10 <- pdrb %>% arrange(desc(pdrb_miliar)) %>% slice_head(n = 10)
ggplot(top10, aes(x = reorder(provinsi, pdrb_miliar), y = pdrb_miliar / 1000)) +
geom_col(fill = "#2C7FB8") +
coord_flip() +
labs(title = "10 Provinsi dengan PDRB Atas Dasar Harga Berlaku Tertinggi, 2024",
x = "Provinsi", y = "PDRB (triliun rupiah)",
caption = "Sumber: BPS, PDRB ADHB Menurut Provinsi 2024") +
theme_minimal(base_size = 12)

agregat_pulau <- pdrb %>%
group_by(pulau) %>%
summarise(total_pdrb = sum(pdrb_miliar) / 1000,
jumlah_provinsi = n()) %>%
arrange(desc(total_pdrb))
agregat_pulau$pulau <- factor(agregat_pulau$pulau, levels = agregat_pulau$pulau)
ggplot(agregat_pulau, aes(x = pulau, y = total_pdrb, fill = pulau)) +
geom_col(show.legend = FALSE) +
geom_text(aes(label = round(total_pdrb, 0)), vjust = -0.4, size = 3.5) +
labs(title = "Total PDRB Atas Dasar Harga Berlaku Menurut Pulau, 2024",
x = "Pulau/Gugusan Pulau", y = "Total PDRB (triliun rupiah)",
caption = "Sumber: BPS, PDRB ADHB Menurut Provinsi 2024, diolah") +
theme_minimal(base_size = 12)

kalimantan <- pdrb %>% filter(pulau == "Kalimantan") %>% arrange(desc(pdrb_miliar))
ggplot(kalimantan, aes(x = reorder(provinsi, pdrb_miliar), y = pdrb_miliar / 1000)) +
geom_col(fill = "#31A354") +
geom_text(aes(label = round(pdrb_miliar / 1000, 0)), hjust = -0.15, size = 3.5) +
coord_flip(ylim = c(0, max(kalimantan$pdrb_miliar) / 1000 * 1.15)) +
labs(title = "PDRB Atas Dasar Harga Berlaku 5 Provinsi di Kalimantan, 2024",
x = "Provinsi", y = "PDRB (triliun rupiah)",
caption = "Sumber: BPS, PDRB ADHB Menurut Provinsi 2024") +
theme_minimal(base_size = 12)
