Data <- read.table(file.choose(), header = T)
Data
##               Provinsi Jumlah_Mikro
## 1                 ACEH       101654
## 2       SUMATERA_UTARA       127090
## 3       SUMATERA_BARAT        82777
## 4                 RIAU        54345
## 5                JAMBI        38338
## 6     SUMATERA_SELATAN        80047
## 7             BENGKULU        22560
## 8              LAMPUNG       115840
## 9  KEP_BANGKA_BELITUNG        18044
## 10            KEP_RIAU        23398
## 11         DKI_JAKARTA        68935
## 12          JAWA_BARAT       679916
## 13         JAWA_TENGAH       795416
## 14       DI_YOGYAKARTA       125041
## 15          JAWA_TIMUR       724760
## 16              BANTEN       137183
## 17                BALI       145067
## 18 NUSA_TENGGARA_BARAT        85727
## 19 NUSA_TENGGARA_TIMUR       125244
## 20    KALIMANTAN_BARAT        56256
## 21   KALIMANTAN_TENGAH        29780
## 22  KALIMANTAN_SELATAN        73446
## 23    KALIMANTAN_TIMUR        36351
## 24    KALIMANTAN_UTARA         7239
## 25      SULAWESI_UTARA        39432
## 26     SULAWESI_TENGAH        52870
## 27    SULAWESI_SELATAN       123684
## 28   SULAWESI_TENGGARA        51459
## 29           GORONTALO        35234
## 30      SULAWESI_BARAT        23137
## 31              MALUKU        32021
## 32        MALUKU_UTARA        17071
## 33         PAPUA_BARAT         3199
## 34    PAPUA_BARAT_DAYA         3605
## 35               PAPUA         7241
## 36       PAPUA_SELATAN         2842
## 37        PAPUA_TENGAH         2524
## 38    PAPUA_PEGUNUNGAN          115
library(ggplot2)

ggplot(Data, aes(x = Jumlah_Mikro)) +
  geom_histogram(
    binwidth = 100000,
    boundary = 0,
    fill = "pink",
    color = "black"
  ) +
  scale_x_continuous(
    breaks = seq(0, 800000, by = 100000),
    labels = c("0", "100rb", "200rb", "300rb", "400rb", "500rb", "600rb", "700rb", "800rb"),
    limits = c(0, 800000)
  ) +
  labs(
    title = "Jumlah Perusahaan Industri Skala Mikro di Indonesia",
    x = "Jumlah Perusahaan Mikro",
    y = "Freq"
  ) +
  theme_classic() +
  theme(
    axis.text.x = element_text(angle = 0, hjust = 0.5),
    plot.title = element_text(hjust = 0.5, face = "bold")
  )

library(ggplot2)

ggplot(Data, aes(x = "", y = Jumlah_Mikro)) +
  geom_boxplot(fill = "red") +
  scale_y_continuous(
    breaks = seq(0, 800000, by = 100000),
    labels = c("0", "100rb", "200rb", "300rb", "400rb", "500rb", "600rb", "700rb", "800rb"),
    limits = c(0, 800000)
  ) +
  labs(
    title = "Box Plot Jumlah Perusahaan Mikro Indonesia 2025",
    x = "",
    y = "Jumlah Perusahaan Mikro"
  ) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"))

library(dplyr)
## 
## 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
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ lubridate 1.9.5     ✔ tibble    3.3.1
## ✔ purrr     1.2.2     ✔ tidyr     1.3.2
## ✔ readr     2.2.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)

Data_Kalimantan <- Data %>%
  filter(str_starts(Provinsi, "KALIMANTAN"))

ggplot(Data_Kalimantan, aes(x = Provinsi, y = Jumlah_Mikro, fill = Provinsi)) +
  geom_col() +
  scale_y_continuous(
    breaks = seq(0, 80000, by = 10000),
    labels = c("0", "10rb", "20rb", "30rb", "40rb", "50rb", "60rb", "70rb", "80rb"),
    limits = c(0, 80000)
  ) +
  labs(
    title = "Jumlah Perusahaan Mikro Pulau Kalimantan Tahun 2025",
    x = "Provinsi",
    y = "Jumlah Perusahaan Mikro"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    plot.title = element_text(hjust = 0.5, face = "bold"),
    legend.position = "none"
  )