Package {MASS} package dalam R yang berisi berbagai fungsi statistik dan dataset yang digunakan dalam analisis data, data yang digunakan adalah data “anorexia”. data anorexia berisi data tentang berat badan pasien anoreksia sebelum dan sesudah menjalani terapi.
library(MASS)
data("anorexia")
head(anorexia)
dim(anorexia)
## [1] 72 3
sebaran dari data kategorik ordinal Jenis Perlakuan Terapi (Treat).
library(sf)
## Linking to GEOS 3.13.0, GDAL 3.10.1, PROJ 9.5.1; sf_use_s2() is TRUE
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
##
## select
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(readr)
library(readxl)
ggplot(data = anorexia, mapping = aes(x = Treat)) +
geom_bar()
Secara default, geom_bar() menggunakan stat = “count”, yang berarti ia akan menghitung jumlah observasi (frekuensi) untuk setiap kategori dari variabel yang disebutkan pada sumbu x dan menampilkannya sebagai tinggi batang. Namun, ketika menggunakan stat = “identity”, maka akan diberitahu ggplot2 untuk menggunakan nilai yang sudah ada di data sebagai tinggi batang, bukan menghitung frekuensi.
freqtab <- as.data.frame(table(anorexia$Treat))
freqtab
library(sf)
library(ggplot2)
library(dplyr)
library(readr)
library(readxl)
ggplot(data = freqtab, mapping = aes(x = Var1, y = Freq)) +
geom_bar(stat = "identity")
Cara lain yang dapat digunakan untuk membuat diagram batang ketika data yang kita miliki sudah dalam bentuk tabel frekuensi adalah dengan geom_col().
library(sf)
library(ggplot2)
library(dplyr)
library(readr)
library(readxl)
ggplot(data = freqtab, mapping = aes(x = Var1, y = Freq)) +
geom_col()
Menambahkan judul, mewarnai grafik, dan memberikan label pada setiap batang.
library(sf)
library(ggplot2)
library(dplyr)
library(readr)
library(readxl)
ggplot(data = freqtab, mapping = aes(x = Var1, y = Freq)) +
geom_col(fill = "coral", alpha = 0.7) +
labs(title = "Frekuensi berdasarkan Jenis Perlakuan Terapi terhadap Perubahan Berat Badan pada Pasien Anoreksia",
x = "Jenis Perlakuan Terapi",
y = "Perubahan Berat Badan") +
geom_text(aes(label = Freq), vjust = -0.25)
library(sf)
library(ggplot2)
library(dplyr)
library(readr)
library(readxl)
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 = "skyblue") +
geom_point(color = "navyblue", size=4, alpha = 0.6) +
geom_text(aes(label = Freq), vjust = -1.00) +
coord_flip() +
labs(y = "Berat Badan Pasien", x = "Jenis Perlakuan Terapi")
library(sf)
library(ggplot2)
library(dplyr)
library(readr)
library(readxl)
ggplot(data = anorexia,
mapping = aes(x = Treat, fill =as.factor(Postwt))) +
geom_bar(position = "dodge", stat = "count") +
labs(x = "Jenis Perlakuan Terapi", fill = "Berat Badan Pasien",
y = "Jumlah Pasien") +
scale_fill_brewer(palette = "RdBu") +
theme_light()
## Warning in RColorBrewer::brewer.pal(n, pal): n too large, allowed maximum for palette RdBu is 11
## Returning the palette you asked for with that many colors
library(sf)
library(ggplot2)
library(dplyr)
library(readr)
library(readxl)
ggplot(data=anorexia,
mapping=aes(x=Treat, fill=as.factor(Postwt)))+
geom_bar(position="stack", stat="count")+
labs(x="Jenis Perlakuan Terapi", fill="Berat Badan Pasien",
y="Jumlah Pasien")+
scale_fill_brewer(palette = "RdBu")+
theme_light()
## Warning in RColorBrewer::brewer.pal(n, pal): n too large, allowed maximum for palette RdBu is 11
## Returning the palette you asked for with that many colors
Menyiapkan data dengan meringkas menjadi tabel frekuensi
library(dplyr)
df <- anorexia %>%
group_by(Treat) %>%
summarise(counts = n())
df
Mengitung posisi label teks sebagai jumlah kumulatif proporsi.
df <- df %>%
arrange(desc(Treat)) %>%
mutate(prop = round(counts*100/sum(counts), 1),
lab.ypos = cumsum(prop) - 0.5*prop)
head(df, 4)
library(sf)
library(ggplot2)
library(dplyr)
library(readr)
library(readxl)
ggplot(df, aes(x="",y = prop, fill=Treat))+
geom_bar(width=1,stat="identity", color="magenta")+
geom_text(aes(y=lab.ypos, label = prop), color="black")+
coord_polar("y", start=0)+
ggpubr::fill_palette("jco")+
theme_void()
#Import Data
library(readxl)
library(sf)
setwd("C:/Users/Zahra Mahendra Putri/Documents/STATISTIKA UNTIRTA/MATA KULIAH/SEMESTER 4/Eksplorasi Dan Visualisasi Data")
#Import Data Excel
data.spasial=read_xlsx("exportsumbar2.xlsx",sheet = 1)
head(data.spasial)
#IMPORT PETA SHP
st_drivers()
dbf.Export_Output = read_sf("C:/Users/Zahra Mahendra Putri/Documents/STATISTIKA UNTIRTA/MATA KULIAH/SEMESTER 4/Eksplorasi Dan Visualisasi Data/exportsumbar2.xlsx")
#Menggabungkan Data ke file SHP
gabung.sumbar=left_join(dbf.Export_Output,data.spasial,by="ID_2,N,10,0")
head(gabung.sumbar)
# Panggil library yang dibutuhkan
library(sf)
library(ggplot2)
library(dplyr)
library(readr)
library(readxl)
library(MASS)
library(foreign)
# 1. Baca file shapefile
shapefile_path <- "C:/Users/Zahra Mahendra Putri/Documents/STATISTIKA UNTIRTA/MATA KULIAH/SEMESTER 4/Eksplorasi Dan Visualisasi Data"
sumbar_sf <- st_read(shapefile_path)
## Reading layer `Export_Output' from data source
## `C:\Users\Zahra Mahendra Putri\Documents\STATISTIKA UNTIRTA\MATA KULIAH\SEMESTER 4\Eksplorasi Dan Visualisasi Data'
## using driver `ESRI Shapefile'
## Simple feature collection with 19 features and 7 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 98.59618 ymin: -4.01639 xmax: 101.8861 ymax: 0.908519
## Geodetic CRS: WGS 84
# Cek apakah data terbaca dengan benar untuk memastikan "POLYGON" atau "MULTIPOLYGON"
print(sumbar_sf)
## Simple feature collection with 19 features and 7 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 98.59618 ymin: -4.01639 xmax: 101.8861 ymax: 0.908519
## Geodetic CRS: WGS 84
## First 10 features:
## NAME_1 ID_2 NAME_2 TYPE_2 ENGTYPE_2 Longitude
## 1 Sumatera Barat 381 Agam Kabupaten Regency 100.16348
## 2 Sumatera Barat 382 Bukittinggi Kotamadya Municipality 100.37399
## 3 Sumatera Barat 383 Dharmasraya Kabupaten Regency 101.54744
## 4 Sumatera Barat 384 Kepulauan Mentawai Kabupaten Regency 99.34132
## 5 Sumatera Barat 385 Kota Solok Kotamadya Municipality 100.62103
## 6 Sumatera Barat 386 Lima Puluh Koto Kabupaten Regency 100.57973
## 7 Sumatera Barat 387 Padang Panjang Kotamadya Municipality 100.42902
## 8 Sumatera Barat 388 Padang Pariaman Kabupaten Regency 100.26020
## 9 Sumatera Barat 389 Padang Kotamadya Municipality 100.44859
## 10 Sumatera Barat 390 Pariaman Kotamadya Municipality 100.15671
## Latitude geometry
## 1 -0.2524166310 MULTIPOLYGON (((99.9713 -0....
## 2 -0.2730771120 MULTIPOLYGON (((100.3629 -0...
## 3 -1.1424451741 MULTIPOLYGON (((101.4155 -1...
## 4 -1.8543412356 MULTIPOLYGON (((99.17167 -1...
## 5 -0.7651748393 MULTIPOLYGON (((100.5047 -0...
## 6 -0.0005993867 MULTIPOLYGON (((100.8411 -0...
## 7 -0.4576744644 MULTIPOLYGON (((100.4548 -0...
## 8 -0.6015144474 MULTIPOLYGON (((100.2918 -0...
## 9 -0.9772236331 MULTIPOLYGON (((100.5271 -0...
## 10 -0.6287070778 MULTIPOLYGON (((100.1654 -0...
st_geometry_type(sumbar_sf)
## [1] MULTIPOLYGON MULTIPOLYGON MULTIPOLYGON MULTIPOLYGON MULTIPOLYGON
## [6] MULTIPOLYGON MULTIPOLYGON MULTIPOLYGON MULTIPOLYGON MULTIPOLYGON
## [11] MULTIPOLYGON MULTIPOLYGON MULTIPOLYGON MULTIPOLYGON MULTIPOLYGON
## [16] MULTIPOLYGON MULTIPOLYGON MULTIPOLYGON MULTIPOLYGON
## 18 Levels: GEOMETRY POINT LINESTRING POLYGON MULTIPOINT ... TRIANGLE
#file dbf
dbf_path <- "C:/Users/Zahra Mahendra Putri/Documents/STATISTIKA UNTIRTA/MATA KULIAH/SEMESTER 4/Eksplorasi Dan Visualisasi Data/Export_Output.dbf"
data_dbf <- read.dbf(dbf_path)
# Tampilkan beberapa baris awal
head(data_dbf)
#cek struktur data
glimpse(sumbar_sf)
## Rows: 19
## Columns: 8
## $ NAME_1 <chr> "Sumatera Barat", "Sumatera Barat", "Sumatera Barat", "Sumat…
## $ ID_2 <dbl> 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, …
## $ NAME_2 <chr> "Agam", "Bukittinggi", "Dharmasraya", "Kepulauan Mentawai", …
## $ TYPE_2 <chr> "Kabupaten", "Kotamadya", "Kabupaten", "Kabupaten", "Kotamad…
## $ ENGTYPE_2 <chr> "Regency", "Municipality", "Regency", "Regency", "Municipali…
## $ Longitude <dbl> 100.16348, 100.37399, 101.54744, 99.34132, 100.62103, 100.57…
## $ Latitude <dbl> -0.2524166310, -0.2730771120, -1.1424451741, -1.8543412356, …
## $ geometry <MULTIPOLYGON [°]> MULTIPOLYGON (((99.9713 -0...., MULTIPOLYGON ((…
glimpse(data_dbf)
## Rows: 19
## Columns: 7
## $ NAME_1 <fct> Sumatera Barat, Sumatera Barat, Sumatera Barat, Sumatera Bar…
## $ ID_2 <int> 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, …
## $ NAME_2 <fct> Agam, Bukittinggi, Dharmasraya, Kepulauan Mentawai, Kota Sol…
## $ TYPE_2 <fct> Kabupaten, Kotamadya, Kabupaten, Kabupaten, Kotamadya, Kabup…
## $ ENGTYPE_2 <fct> Regency, Municipality, Regency, Regency, Municipality, Regen…
## $ Longitude <dbl> 100.16348, 100.37399, 101.54744, 99.34132, 100.62103, 100.57…
## $ Latitude <dbl> -0.2524166310, -0.2730771120, -1.1424451741, -1.8543412356, …
# Gabungkan berdasarkan ID_2
gabung.sumbar <- left_join(sumbar_sf, data_dbf, by = "ID_2")
#cek longitude
colnames(gabung.sumbar)
## [1] "NAME_1.x" "ID_2" "NAME_2.x" "TYPE_2.x" "ENGTYPE_2.x"
## [6] "Longitude.x" "Latitude.x" "NAME_1.y" "NAME_2.y" "TYPE_2.y"
## [11] "ENGTYPE_2.y" "Longitude.y" "Latitude.y" "geometry"
# Visualisasi peta dengan fill berdasarkan Longitude
plot.sumbar <- ggplot(data = gabung.sumbar) +
geom_sf(aes(fill = Longitude.x)) +
scale_fill_distiller("Longitude", palette = "YlOrRd")
plot.sumbar