RMS Titanic adalah sebuah kapal penumpang super Britania Raya yang tenggelam di Samudera Atlantik Utara pada tanggal 15 April 1912 setelah menabrak sebuah gunung es pada pelayaran perdananya dari Southampton, Inggris ke New York City. Tenggelamnya Titanic mengakibatkan kematian sebanyak 1.514 orang dalam salah satu bencana maritim masa damai paling mematikan sepanjang sejarah. Titanic merupakan kapal terbesar di dunia pada pelayaran perdananya. Satu dari tiga kapal samudra kelas Olympic dioperasikan oleh White Star Line. Kapal ini dibangun pada 1909 sampai 1911 oleh galangan kapal Harland and Wolff di Belfast. Kapal ini sanggup mengangkut 2.224 penumpang. (source : https://id.wikipedia.org/wiki/RMS_Titanic)
Pada kesempatan kali ini saya akan melakukan Data Visualization pada dataset yang berisi tentang biodata dari penumpang kapal Titanic tersebut. Dataset ini didapatkan dari https://www.kaggle.com/c/titanic yang diambil pada bulan Maret 2021. Dalam pembahasan kali ini akan menampilkan beberapa plot yang akan ditampilkan sehingga dapat memudahkan kita dalam membaca atau mengambil insight dari data Titanic ini.
library(ggplot2)
library(dplyr)
library(ggthemes)Setelah mengimport library yang dibutuhkan, selanjutnya import data yang akan digunakan yaitu dataset train dan test. Untuk mempermudahkan dalam pengolahannya, maka dilakukan penggabungan kedua dataset tersebut kedalam satu dataframe.
# Membaca dan Mengecek data train.csv & test.csv
train <- read.csv("data/train.csv")
test <- read.csv("data/test.csv")
test$Survived <- NA
titanic <- rbind(train, test)
str(titanic)## 'data.frame': 1309 obs. of 12 variables:
## $ PassengerId: int 1 2 3 4 5 6 7 8 9 10 ...
## $ Survived : int 0 1 1 1 0 0 0 0 1 1 ...
## $ Pclass : int 3 1 3 1 3 3 1 3 3 2 ...
## $ Name : chr "Braund, Mr. Owen Harris" "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" "Heikkinen, Miss. Laina" "Futrelle, Mrs. Jacques Heath (Lily May Peel)" ...
## $ Sex : chr "male" "female" "female" "female" ...
## $ Age : num 22 38 26 35 35 NA 54 2 27 14 ...
## $ SibSp : int 1 1 0 1 0 0 0 3 0 1 ...
## $ Parch : int 0 0 0 0 0 0 0 1 2 0 ...
## $ Ticket : chr "A/5 21171" "PC 17599" "STON/O2. 3101282" "113803" ...
## $ Fare : num 7.25 71.28 7.92 53.1 8.05 ...
## $ Cabin : chr "" "C85" "" "C123" ...
## $ Embarked : chr "S" "C" "S" "S" ...
Pada kolom Cabin terdapat nilai kosong "", agar dapat mengetahui jumlah Missing Value (NA) pada data maka dapat dilakukan imputasi dengan mengisikan nilai NA pada data.
titanic$Cabin[titanic$Cabin == ""] <- NA# Mengetahui jumlah Missing Value pada masing-masing kolom di Dataset
colSums(is.na(titanic))## PassengerId Survived Pclass Name Sex Age
## 0 418 0 0 0 263
## SibSp Parch Ticket Fare Cabin Embarked
## 0 0 0 1 1014 0
Dari hasil diatas dapat kita lihat, bahwa kolom Age terdapat banyak nilai NA hampir sebanyak 20% dari data, agar datanya dapat kita gunakan lebih optimal maka akan dilakukan proses imputasi dengan nilai NA menggunakan nilai median pada kolom Age, hal yang sama juga dilakukan pada kolom Fare. Sedangkan pada kolom Survived terdapat sebanyak 418 NA yang sudah di set kedalam observasi dan Cabin sebesar 1014 yang akan dihilangkan.
# Median `Age`
median(titanic$Age[!is.na(titanic$Age)])## [1] 28
# Median `Fare`
median(titanic$Fare[!is.na(titanic$Fare)])## [1] 14.4542
titanic <- subset(x = titanic, select = -c(Cabin))
titanic$Age[is.na(titanic$Age)] = 28
titanic$Fare[is.na(titanic$Fare)] = 14.454
titanic$Embarked[titanic$Embarked == ""] = "C"str(titanic)## 'data.frame': 1309 obs. of 11 variables:
## $ PassengerId: int 1 2 3 4 5 6 7 8 9 10 ...
## $ Survived : int 0 1 1 1 0 0 0 0 1 1 ...
## $ Pclass : int 3 1 3 1 3 3 1 3 3 2 ...
## $ Name : chr "Braund, Mr. Owen Harris" "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" "Heikkinen, Miss. Laina" "Futrelle, Mrs. Jacques Heath (Lily May Peel)" ...
## $ Sex : chr "male" "female" "female" "female" ...
## $ Age : num 22 38 26 35 35 28 54 2 27 14 ...
## $ SibSp : int 1 1 0 1 0 0 0 3 0 1 ...
## $ Parch : int 0 0 0 0 0 0 0 1 2 0 ...
## $ Ticket : chr "A/5 21171" "PC 17599" "STON/O2. 3101282" "113803" ...
## $ Fare : num 7.25 71.28 7.92 53.1 8.05 ...
## $ Embarked : chr "S" "C" "S" "S" ...
Masih terdapat beberapa kolom dengan type data yang belum sesuai, maka dari itu type data dengan kolom yang belum sesuai harus disesuaikan terlebih dahulu. Kolom yang belum sesuai type data nya sebagai berikut :
FactorFactorFactorFactorSebelum itu, dapat kita lihat pada data Survived, Pclass dan Embarked isi datanya masih menggunakan alias keterangan, agar lebih jelas mari kita memberikan nama pada masing-masingnya.
# Memberi nama masing-masing data `Survived`, `Pclass`, `Embarked`
titanic$Survived <- ifelse(titanic$Survived == 1, "Survived", "Dead")
titanic$Pclass <- sapply(as.character(titanic$Pclass), switch,
"1" = "1st Class",
"2" = "2nd Class",
"3" = "3rd Class")
titanic$Embarked <- sapply(titanic$Embarked, switch,
"C" = "Cherbourg",
"Q" = "Queenstown",
"S" = "Southampton")# Mengubah data menjadi factor
titanic[, c("Pclass","Sex","Embarked","Survived")] <- lapply(
titanic[, c("Pclass","Sex","Embarked","Survived")], as.factor)str(titanic)## 'data.frame': 1309 obs. of 11 variables:
## $ PassengerId: int 1 2 3 4 5 6 7 8 9 10 ...
## $ Survived : Factor w/ 2 levels "Dead","Survived": 1 2 2 2 1 1 1 1 2 2 ...
## $ Pclass : Factor w/ 3 levels "1st Class","2nd Class",..: 3 1 3 1 3 3 1 3 3 2 ...
## $ Name : chr "Braund, Mr. Owen Harris" "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" "Heikkinen, Miss. Laina" "Futrelle, Mrs. Jacques Heath (Lily May Peel)" ...
## $ Sex : Factor w/ 2 levels "female","male": 2 1 1 1 2 2 2 2 1 1 ...
## $ Age : num 22 38 26 35 35 28 54 2 27 14 ...
## $ SibSp : int 1 1 0 1 0 0 0 3 0 1 ...
## $ Parch : int 0 0 0 0 0 0 0 1 2 0 ...
## $ Ticket : chr "A/5 21171" "PC 17599" "STON/O2. 3101282" "113803" ...
## $ Fare : num 7.25 71.28 7.92 53.1 8.05 ...
## $ Embarked : Factor w/ 3 levels "Cherbourg","Queenstown",..: 3 1 3 3 3 2 3 3 3 1 ...
Type data di atas sudah sesuai seperti yang diinginkan.
Untuk mengetahui lebih spesifik tentang Age dan Sex dapat dilakukan dengan feature engineering dengan mengekstrak title dari variable Name. Fungsi gsub dapat digunakan dalam kasus ini, dan dalam hal ini variable title akan dibedakan menjadi 6 title yang berbeda. Diantaranya : Mr, Mrs, Master, Miss, Honorific Titles dan Officers.
# menggunakan fungsi gsub
titanic$Title <- gsub("(.*\\,|\\..*)", "", titanic$Name) %>% gsub("[[:space:]]", "", .)
# membedakan variable title
titanic$Title[titanic$Title %in% c("Don", "Sir")] <- "Mr"
titanic$Title[titanic$Title %in% c("Ms", "Mme", "Mlle", "Lady", "Dona", "theCountess")] <- "Mrs"
titanic$Title[titanic$Title %in% c("Jonkheer", "Dr")] <- "Honorific Titles"
titanic$Title[titanic$Title %in% c("Capt", "Col", "Major", "Rev")] <- "Officers"Mengelompokkan Usia Age ke dalam beberapa kelompok.
Ages <- function(x){
if(x < 20) {
x <- "< 20"
} else if (x >= 20 & x <= 29) {
x <- "20-29"
} else if (x >= 30 & x <= 39) {
x <- "30-39"
} else if (x >= 40 & x <= 49) {
x <- "40-49"
} else if (x >= 50 & x <= 59) {
x <- "50-59"
} else if (x >= 60 & x <= 69) {
x <- "60-69"
} else if (x >= 70 & x <= 79) {
x <- "70-79"
} else (x <- "> 80")
}titanic$Ages <- as.factor(sapply(titanic$Age, Ages))head(titanic)| PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Embarked | Title | Ages |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Dead | 3rd Class | Braund, Mr. Owen Harris | male | 22 | 1 | 0 | A/5 21171 | 7.2500 | Southampton | Mr | 20-29 |
| 2 | Survived | 1st Class | Cumings, Mrs. John Bradley (Florence Briggs Thayer) | female | 38 | 1 | 0 | PC 17599 | 71.2833 | Cherbourg | Mrs | 30-39 |
| 3 | Survived | 3rd Class | Heikkinen, Miss. Laina | female | 26 | 0 | 0 | STON/O2. 3101282 | 7.9250 | Southampton | Miss | 20-29 |
| 4 | Survived | 1st Class | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35 | 1 | 0 | 113803 | 53.1000 | Southampton | Mrs | 30-39 |
| 5 | Dead | 3rd Class | Allen, Mr. William Henry | male | 35 | 0 | 0 | 373450 | 8.0500 | Southampton | Mr | 30-39 |
| 6 | Dead | 3rd Class | Moran, Mr. James | male | 28 | 0 | 0 | 330877 | 8.4583 | Queenstown | Mr | 20-29 |
tail(titanic)| PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Embarked | Title | Ages | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1304 | 1304 | NA | 3rd Class | Henriksson, Miss. Jenny Lovisa | female | 28.0 | 0 | 0 | 347086 | 7.7750 | Southampton | Miss | 20-29 |
| 1305 | 1305 | NA | 3rd Class | Spector, Mr. Woolf | male | 28.0 | 0 | 0 | A.5. 3236 | 8.0500 | Southampton | Mr | 20-29 |
| 1306 | 1306 | NA | 1st Class | Oliva y Ocana, Dona. Fermina | female | 39.0 | 0 | 0 | PC 17758 | 108.9000 | Cherbourg | Mrs | 30-39 |
| 1307 | 1307 | NA | 3rd Class | Saether, Mr. Simon Sivertsen | male | 38.5 | 0 | 0 | SOTON/O.Q. 3101262 | 7.2500 | Southampton | Mr | 30-39 |
| 1308 | 1308 | NA | 3rd Class | Ware, Mr. Frederick | male | 28.0 | 0 | 0 | 359309 | 8.0500 | Southampton | Mr | 20-29 |
| 1309 | 1309 | NA | 3rd Class | Peter, Master. Michael J | male | 28.0 | 1 | 1 | 2668 | 22.3583 | Cherbourg | Master | 20-29 |
dim(titanic)## [1] 1309 13
colnames(titanic)## [1] "PassengerId" "Survived" "Pclass" "Name" "Sex"
## [6] "Age" "SibSp" "Parch" "Ticket" "Fare"
## [11] "Embarked" "Title" "Ages"
str(titanic)## 'data.frame': 1309 obs. of 13 variables:
## $ PassengerId: int 1 2 3 4 5 6 7 8 9 10 ...
## $ Survived : Factor w/ 2 levels "Dead","Survived": 1 2 2 2 1 1 1 1 2 2 ...
## $ Pclass : Factor w/ 3 levels "1st Class","2nd Class",..: 3 1 3 1 3 3 1 3 3 2 ...
## $ Name : chr "Braund, Mr. Owen Harris" "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" "Heikkinen, Miss. Laina" "Futrelle, Mrs. Jacques Heath (Lily May Peel)" ...
## $ Sex : Factor w/ 2 levels "female","male": 2 1 1 1 2 2 2 2 1 1 ...
## $ Age : num 22 38 26 35 35 28 54 2 27 14 ...
## $ SibSp : int 1 1 0 1 0 0 0 3 0 1 ...
## $ Parch : int 0 0 0 0 0 0 0 1 2 0 ...
## $ Ticket : chr "A/5 21171" "PC 17599" "STON/O2. 3101282" "113803" ...
## $ Fare : num 7.25 71.28 7.92 53.1 8.05 ...
## $ Embarked : Factor w/ 3 levels "Cherbourg","Queenstown",..: 3 1 3 3 3 2 3 3 3 1 ...
## $ Title : chr "Mr" "Mrs" "Miss" "Mrs" ...
## $ Ages : Factor w/ 8 levels "< 20","> 80",..: 3 4 3 4 4 3 6 1 3 1 ...
Dari hasil Data Inspection didapatkan bahwa Data Titanic memiliki 1309 rows dan 13 columns. Terdapat kolom PassengerId yang dapat kita lihat, kolom ini hanyalah sebuah indeks dan bukan merupakan attribute dari penumpang kapal titanic. Berikut attribute atau variabel yang dapat kita analisis, adalah :
Survived : Tipe data Factor, data penumpang (Survived = 1) atau tidak (0)Pclass : Tipe data Factor, data kelas penumpangName : Tipe data Character, data nama penumpangSex : Tipe data Factor, data jenis kelamin penumpangAge : Tipe data Numeric, data umur penumpangSibSp : Tipe data Integer, data jumlah saudara kandung (Siblings) atau pasangan (spouses)Parch : Tipe data Integer, data jumlah orang tua (parents) atau anak (children)Ticket : Tipe data Character, data identitas ticket penumpangFare : Tipe data Numeric, data kekayaan atau status sosial penumpangEmbarked : Tipe data Factor, data embarkasiTitle : Tipe data Character, data identitas nameAges : Tipe data Factor, data pengelompokkan UsiaDilakukan pengecetakan ulang pada dataset, mengecek Missing Value (NA) yang dapat menyulitkan pengolahan data. Oleh karena itu perlu dideteksi dan bila ada perlu diberi perlakuan.
# cek keseluruhan data
anyNA(titanic)## [1] TRUE
colSums(is.na(titanic))## PassengerId Survived Pclass Name Sex Age
## 0 418 0 0 0 0
## SibSp Parch Ticket Fare Embarked Title
## 0 0 0 0 0 0
## Ages
## 0
Terdapat Missing value (NA) pada variable Survived, tetapi karena variable ini merupakan dependent variable/targets maka tidak dilakukan perlakuan karena akan mempengaruhi keseluruhan data yang lain.
Summary digunakan untuk mendapatkan deskripsi nilai statistik dari data numeric dengan menggunakan function summary(). Function akan membantu untuk mendapatkan quick insight dari data yang kita miliki.
summary(titanic)## PassengerId Survived Pclass Name Sex
## Min. : 1 Dead :549 1st Class:323 Length:1309 female:466
## 1st Qu.: 328 Survived:342 2nd Class:277 Class :character male :843
## Median : 655 NA's :418 3rd Class:709 Mode :character
## Mean : 655
## 3rd Qu.: 982
## Max. :1309
##
## Age SibSp Parch Ticket
## Min. : 0.17 Min. :0.0000 Min. :0.000 Length:1309
## 1st Qu.:22.00 1st Qu.:0.0000 1st Qu.:0.000 Class :character
## Median :28.00 Median :0.0000 Median :0.000 Mode :character
## Mean :29.50 Mean :0.4989 Mean :0.385
## 3rd Qu.:35.00 3rd Qu.:1.0000 3rd Qu.:0.000
## Max. :80.00 Max. :8.0000 Max. :9.000
##
## Fare Embarked Title Ages
## Min. : 0.000 Cherbourg :272 Length:1309 20-29 :607
## 1st Qu.: 7.896 Queenstown :123 Class :character 30-39 :232
## Median : 14.454 Southampton:914 Mode :character < 20 :225
## Mean : 33.281 40-49 :135
## 3rd Qu.: 31.275 50-59 : 70
## Max. :512.329 60-69 : 32
## (Other): 8
PassengerId mendeskripsikan jumlah penumpang dalam kapal Titanic sebanyak 1309.Survived (1) penumpang Titanic selamat 342 orangSex penumpang kapal Titanic masing-masing Laki-laki sebanyak 843 orang dan Perempuan 466Age dari penumpang kapal Titanic berusia paling kecil = 0.17 dan usia paling tua 80Fare paling tinggi sebesar 512.319Embarked tujuan terbanyak penumpang kapal Titanic ke tujuan S= Southampton sebanyak 914, diikuti oleh C = Cherbourg sebanyak 272 dan Q = Queenstown sebanyak 123.Ages berumur :Pclass ?ggplot(data = titanic, aes(x=Pclass, fill=Sex)) +
geom_bar(position = "dodge", width = 0.4)Lebih banyak Laki-laki pada semua Pclass. Namun, rasio laki-laki dan perempuan jauh lebih tinggi pada Pclass 3.
Survived pada masing-masing Pclass, apakah mereka yang lebih membayar lebih di prioritaskan untuk selamat ?# Filter Survived dan Dead pada variable `Survived
titanic.clean <- titanic[titanic$Survived %in% c("Survived", "Dead"),]ggplot(data = titanic.clean, aes(x=Pclass, fill= Survived)) +
geom_bar(position = "dodge") +
scale_fill_brewer(palette = "Set1") >Ya, ternyata mereka yang berada pada Pclass 1 memiliki peluang bertahan hidup jauh lebih baik dibandingkan dengan yang lain.
Survived berdasarkan Title nama?ggplot(data = titanic.clean, aes(x=Title, fill=Survived)) +
geom_bar(position = "dodge") +
scale_fill_brewer(palette = "Set1")titanic.clean.title <- as.data.frame(table(titanic.clean$Survived, titanic.clean$Title))
titanic.clean.title| Var1 | Var2 | Freq |
|---|---|---|
| Dead | Honorific Titles | 5 |
| Survived | Honorific Titles | 3 |
| Dead | Master | 17 |
| Survived | Master | 23 |
| Dead | Miss | 55 |
| Survived | Miss | 127 |
| Dead | Mr | 437 |
| Survived | Mr | 82 |
| Dead | Mrs | 26 |
| Survived | Mrs | 105 |
| Dead | Officers | 9 |
| Survived | Officers | 2 |
ggplot(titanic.clean.title, aes(x=Var2, y=Freq, fill= Var1)) +
geom_col(position="fill") +
ggthemes::theme_economist() +
scale_color_gdocs() +
ggthemes::scale_fill_gdocs() +
scale_fill_brewer(palette = "Set1") +
geom_text(aes(label = Freq), position = position_fill(vjust = .5), col = "white") + coord_flip() +
labs(fill = "Survived",
x = "Title")
- Laki-laki dengan Title Mr memiliki tingkat kelangsungan hidup terburuk
- Perempuan memiliki tingkat kelangsungan hidup yang lebih baik daripada Laki-laki.
- Tingkat kelangsungan hidup Honorific Titles dan Officers lebih buruk dibanding tingkat kematiannya.
- Master digunakan di inggris untuk anak laki-laki yang teralalu muda untuk dipanggil Mister, sepertinya anak-anak memiliki peluang lebih baik untuk bertahan hidup.
ggplot(data = titanic.clean, aes(x=Sex, fill=Survived)) +
geom_bar(position = "dodge") +
scale_fill_brewer(palette = "Set1") +
facet_wrap(~Pclass, nrow = 3, scales = "free_y")
- Dalam Pclass 1, perempuan memiliki tingkat kelangsungan hidup yang sangat tinggi dengan sangat pasti, sedangkan laki-laki jauh lebih tinggi tingkat kematiannya.
- Pada Pclass 2, hampir sama dengan apa yang terjadi pada Pclass 1 hanya jumlahnya saja yang berbeda.
- Sedangkan pada Pclass 3, tingkat kelangsungan hidupnya hampir 50/50, sangat kontras dengan tingkat kelangsungan hidup laki-laki yang jauh lebih tinggi tingkat kematiannya.
titanic.clean$Family <- titanic.clean$SibSp + titanic.clean$Parch + 1ggplot(data = titanic.clean, aes(x=Family, fill=Survived)) +
geom_bar(stat = "count", position = "dodge") +
scale_x_continuous(breaks = c(1:11)) +
scale_fill_brewer(palette = "Set1") +
ylim(c(0, 400)) +
labs( x = "Family Size" ) +
theme_bw()Terlihat Seperti itu : - Jika penumpang tidak memiliki keluarga, peluang bertahan hidup lebih buruk - Keluarga yang lebih kecil (2-4) memiliki peluang bertahan hidup lebih baik - Namun, keluarga yang besar (+5) tidak memiliki peluang bertahan hidup yang lebih baik
# Filter Pclass 1st Class
titanic.pclass1 <- titanic.clean[titanic.clean$Pclass %in% "1st Class", ]
# Plot Penumpang Tiket Pclass 1st Class
p1 <- ggplot(data = titanic.pclass1, aes(x = Fare, y = Age)) +
geom_point(colour = "yellow", shape = 21, size =3, aes(fill = Survived)) +
scale_fill_brewer(palette = "Set1") +
theme_minimal() +
labs(title = "Penumpang Tiket Kelas 1")
# Filter Pclass 2nd Class
titanic.pclass2 <- titanic.clean[titanic.clean$Pclass %in% "2nd Class", ]
# Plot Penumpang Tiket Pclass 2nd Class
p2 <- ggplot(data = titanic.pclass2, aes(x = Fare, y = Age)) +
geom_point(colour = "yellow", shape = 21, size =3, aes(fill = Survived)) +
scale_fill_brewer(palette = "Set1") +
theme_minimal() +
labs(title = "Penumpang Tiket Kelas 2")
# Filter Pclass 3nd Class
titanic.pclass3 <- titanic.clean[titanic.clean$Pclass %in% "3rd Class", ]
# Plot Penumpang Tiket Pclass 3nd Class
p3 <- ggplot(data = titanic.pclass3, aes(x = Fare, y = Age)) +
geom_point(colour = "yellow", shape = 21, size =3, aes(fill = Survived)) +
scale_fill_brewer(palette = "Set1") +
theme_minimal() +
labs(title = "Penumpang Tiket Kelas 3")
require(gridExtra)
grid.arrange(p1,p2,p3, ncol=1)titanic.clean.prop <- as.data.frame(table(titanic.clean$Survived,titanic.clean$Ages))
titanic.clean.prop| Var1 | Var2 | Freq |
|---|---|---|
| Dead | < 20 | 85 |
| Survived | < 20 | 79 |
| Dead | > 80 | 0 |
| Survived | > 80 | 1 |
| Dead | 20-29 | 268 |
| Survived | 20-29 | 129 |
| Dead | 30-39 | 94 |
| Survived | 30-39 | 73 |
| Dead | 40-49 | 55 |
| Survived | 40-49 | 34 |
| Dead | 50-59 | 28 |
| Survived | 50-59 | 20 |
| Dead | 60-69 | 13 |
| Survived | 60-69 | 6 |
| Dead | 70-79 | 6 |
| Survived | 70-79 | 0 |
ggplot(data = titanic.clean.prop, mapping = aes(x = Freq, y = reorder(Var2, Freq))) +
geom_col(mapping = aes(fill = Var1), position = "stack") +
labs(x = "Proporsi Keselamatan Penumpang",
y = NULL,
fill = NULL,
title = "Proporsi Keselamatan Penumpang Kapal Titanic",
subtitle = "Berdasarkan Rentang Usia") +
scale_fill_brewer(palette = "Set1") +
theme_minimal() +
theme(legend.position = "top")Rentang usia 20-29 tahun memiliki tingkat keselamatan lebih tinggi dari yang lain, tetapi memiliki tingkat kematian yang melebihi dan sangat tinggi dari yang lain pula.
Embarkednya ?titanic.clean.emb <- as.data.frame(table(titanic.clean$Survived, titanic.clean$Embarked))
titanic.clean.emb| Var1 | Var2 | Freq |
|---|---|---|
| Dead | Cherbourg | 75 |
| Survived | Cherbourg | 95 |
| Dead | Queenstown | 47 |
| Survived | Queenstown | 30 |
| Dead | Southampton | 427 |
| Survived | Southampton | 217 |
ggplot(titanic.clean.emb, aes(x=Var2, y=Freq, fill= Var1)) +
geom_col(position = "fill") +
ggthemes::theme_economist() +
scale_color_gdocs() +
ggthemes::scale_fill_gdocs() +
scale_fill_brewer(palette = "Set1") +
geom_text(aes(label = Freq), position = position_fill(vjust = .5), col = "white") +
labs(fill = "Survived",
x = "Embarked")
- Untuk Embarked Cherbourg penumpang yang selamat sebanyak 95 orang dan penumpang meninggal sebanyak 75 orang.
- Pada Embarked Queenstown penumpang yang selamat sebanyak 30 orang dan penumpang meninggal sebanyak 47 orang.
- Sedangkan untuk Embarked Southampton penumpang yang selamat sebanyak 217 orang dan penumpang meninggal sebanyak 427 orang.