library(ggplot2)
data(Puromycin)
head(Puromycin)
NROW(Puromycin) #NROW atau bisa juga dim
## [1] 23
dim(Puromycin)
## [1] 23  3

Bar Chart

ggplot(data=Puromycin, mapping=aes(x=conc))+
  geom_bar()

## Frekuensi membuat tabel frekuensi

freqtab <- as.data.frame(table(Puromycin$conc))
freqtab

membuat bar chart

ggplot(data=freqtab, mapping=aes(x=Var1, y=Freq))+
  geom_bar(stat="identity")

#Atau bisa juga
ggplot(data=freqtab, mapping=aes(x=Var1, y=Freq))+
  geom_col()

modifikasi bar chart

ggplot(data=freqtab, mapping=aes(x=Var1, y=Freq))+
  geom_col(fill="coral", alpha=0.9)+
  labs(title = "Frekuensi berdasarkan konsentrasi substrat",
       x="konsentrasi substrat",
       y="frequensi")+
  geom_text(aes(label=Freq), vjust=-0.2)

## Needle chart

ggplot(data=freqtab,
       mapping=aes(x=reorder(Var1,Freq), y=Freq))+
  geom_segment(aes(x=reorder(Var1,Freq),
                   xend=reorder(Var1,Freq),
                   y=0, yend=Freq), color="black")+
  geom_point(color="yellow", size=9, alpha=0.9)+
  coord_flip()+
  labs(y="frekuensi", x="konsentrasi substrat")+
   geom_text(aes(label=Freq), vjust=0.7)

## Grouped bar chart

ggplot(data=Puromycin,
       mapping=aes(x=conc, fill=as.factor(state)))+
  geom_bar(position="dodge", stat="count")+
  labs(x="konsentrasi substrat", fill="status eksperimen",
       y="frekuensi")+
  scale_fill_brewer(palette = "Blues")+
  theme_light()

## Stacked bar chart

ggplot(data=Puromycin,
       mapping=aes(x=conc, fill=as.factor(state)))+
  geom_bar(position="stack", stat="count")+
  labs(x="konsentrasi substrat", fill="status eksperimen",
       y="frekuensi")+
  scale_fill_brewer(palette = "Blues")+
  theme_light()

pie chart

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
df <- Puromycin %>%
  group_by(conc) %>%
  summarise(counts=n())
df
library(dplyr)
df <- df %>%
  arrange(desc(conc)) %>%
  mutate(prop=round(counts*100/sum(counts), 1),
         lab.ypos = cumsum(prop)-0.5*prop)
head(df,4)

membuat grafik pie chart

ggplot(df, aes(x="", y=prop, fill=conc)) +
  geom_bar(width=1, stat="identity", color="white") +
  geom_text(aes(y=lab.ypos, label = prop), color="magenta") +
  coord_polar("y", start=0) +
  scale_fill_gradient(low="pink", high="red") +  # Palet warna kontinu
  theme_void()

Peta spasial

library(readxl)
data.spasial <- read_xlsx("C:/Users/Lenovo IP Slim 3/Documents/export-output-2.xlsx",sheet = 1)
head(data.spasial)

#import shp

library(sf)
## Warning: package 'sf' was built under R version 4.4.3
## Linking to GEOS 3.13.0, GDAL 3.10.1, PROJ 9.5.1; sf_use_s2() is TRUE
shp.jabar <- read_sf("C:/Users/Lenovo IP Slim 3/Desktop/PETA SHP 34 Prov/Export_Output_2.dbf")

#menggabungkn data

# Import library yang diperlukan
library(sf)
library(dplyr)  # Pastikan library dplyr digunakan untuk left_join

sum(duplicated(shp.jabar$NAME_1))  # Periksa duplikasi di shp.jabar
## [1] 24
sum(duplicated(data.spasial$NAME_1))  # Periksa duplikasi di data.spasial
## [1] 24
shp.jabar <- shp.jabar %>% distinct(NAME_1, .keep_all = TRUE)
data.spasial <- data.spasial %>% distinct(NAME_1, .keep_all = TRUE)

data.spasial <- data.spasial %>%
  group_by(NAME_1) %>%
  summarise(across(everything(), mean, na.rm = TRUE))  # Sesuaikan dengan jenis data
## Warning: There were 4 warnings in `summarise()`.
## The first warning was:
## ℹ In argument: `across(everything(), mean, na.rm = TRUE)`.
## ℹ In group 1: `NAME_1 = "Jawa Barat"`.
## Caused by warning:
## ! The `...` argument of `across()` is deprecated as of dplyr 1.1.0.
## Supply arguments directly to `.fns` through an anonymous function instead.
## 
##   # Previously
##   across(a:b, mean, na.rm = TRUE)
## 
##   # Now
##   across(a:b, \(x) mean(x, na.rm = TRUE))
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 3 remaining warnings.
# Membaca data shapefile
shp.jabar <- read_sf("C:/Users/Lenovo IP Slim 3/Desktop/PETA SHP 34 Prov/Export_Output_2.dbf")

# Menggabungkan data dengan left_join
gabung.jabar <- left_join(shp.jabar, data.spasial, by = "NAME_1")

# Jika datanya memiliki many-to-many relationship, coba gunakan full_join
gabung.jabar <- full_join(shp.jabar, data.spasial, by = "NAME_1")

plot.jabar <- ggplot(data = gabung.jabar)+
  geom_sf(aes(fill = Latitude.x))+
  scale_fill_distiller("index rate", palette = "Blues")
plot.jabar