Nama Anggota: 1. Enrique Marcellino_2602078253 2. Nathan Gudfried_2602071884 3. Nicholas Thenoch_2602142804 4. Blassio Adriautarya_2602110430

Instansi: Universitas Bina Nusantara, Kampus Alam Sutera Nama Mata Kuliah: Visual Analytics and Application, kelas LB55

Data Puromycin adalah kumpulan data yang mencakup pengukuran laju reaksi enzim dalam kaitannya dengan konsentrasi Puromycin, suatu antibiotik yang dapat menghambat sintesis protein. Khususnya, data ini mencerminkan pengaruh Puromycin terhadap laju reaksi dalam dua kondisi berbeda: sel yang telah diobati (treated) dan sel yang tidak diobati (untreated).

Dalam data ini, terdapat tiga variabel utama: Konsentrasi (conc): Menunjukkan konsentrasi Puromycin dalam miligram per mililiter, yang merupakan variabel independen dalam eksperimen ini. Laju (rate): Menunjukkan laju reaksi enzimatis dalam unit per jam, yang diukur sebagai variabel respons. Status (state): Kategori yang menunjukkan apakah sampel telah diobati dengan Puromycin atau tidak.

Analisis ini bertujuan untuk menggali lebih dalam tentang bagaimana konsentrasi Puromycin mempengaruhi laju reaksi enzim, dan perbedaan potensial antara sampel yang telah diobati dan yang tidak diobati. Melalui visualisasi data menggunakan stacked bar plot, box plot, scatter plot, dan line chart, kita akan dapat memahami pola, tren, dan hubungan dalam data tersebut secara lebih efektif dan efisien.

R Markdown

data_puromycin = Puromycin
View (Puromycin)
data_puromycin
##    conc rate     state
## 1  0.02   76   treated
## 2  0.02   47   treated
## 3  0.06   97   treated
## 4  0.06  107   treated
## 5  0.11  123   treated
## 6  0.11  139   treated
## 7  0.22  159   treated
## 8  0.22  152   treated
## 9  0.56  191   treated
## 10 0.56  201   treated
## 11 1.10  207   treated
## 12 1.10  200   treated
## 13 0.02   67 untreated
## 14 0.02   51 untreated
## 15 0.06   84 untreated
## 16 0.06   86 untreated
## 17 0.11   98 untreated
## 18 0.11  115 untreated
## 19 0.22  131 untreated
## 20 0.22  124 untreated
## 21 0.56  144 untreated
## 22 0.56  158 untreated
## 23 1.10  160 untreated

Stackbar plot

plot_ly(data_puromycin, x = ~conc, y = ~rate, type = 'bar', color = ~state) %>%
  layout(barmode = 'stack')
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

Stackbar plot ini memvisualisasikan laju pertumbuhan pada berbagai konsentrasi Puromisin, membedakan antara sampel yang diobati dan tidak diobati. Pada sumbu x, plot menunjukkan konsentrasi yang berkisar dari 0 hingga 1, dengan setiap batang mewakili tingkat konsentrasi tertentu. Sumbu y mengukur laju pertumbuhan, yang digambarkan oleh tinggi setiap batang, yang dibagi menjadi biru untuk sampel yang diobati dan merah untuk yang tidak diobati. Kode warna ini memungkinkan perbandingan visual yang segera antara dua grup pada setiap tingkat konsentrasi.

Dari analisis data, terlihat bahwa pada konsentrasi yang lebih rendah, dari 0.02 hingga 0.22, sampel yang diobati secara konsisten menunjukkan laju pertumbuhan yang lebih tinggi dibandingkan dengan sampel yang tidak diobati, menunjukkan efek positif dari perlakuan Puromisin hingga konsentrasi tertentu. Pada konsentrasi yang lebih tinggi, terutama pada 0.56 dan 1.10, terjadi peningkatan signifikan dalam laju pertumbuhan keseluruhan untuk kedua grup, meskipun perbedaan antara sampel yang diobati dan tidak diobati menjadi kurang nyata. Pola ini menunjukkan bahwa meskipun efek Puromisin meningkat dengan konsentrasi, dampak diferensialnya antara grup yang diobati dan tidak diobati berkurang pada dosis yang lebih tinggi.

Boxplot

plot_ly(data_puromycin, y = ~rate, x = ~state, type = 'box', boxmean = TRUE)

Diagram boxplot ini menunjukkan distribusi nilai tingkat (rate) untuk sampel yang diperlakukan (treated) dan tidak diperlakukan (untreated) dengan menggunakan data Puromycin. Dari boxplot, kita dapat melihat bahwa median dari tingkat pada sampel yang diperlakukan lebih tinggi dibandingkan dengan sampel yang tidak diperlakukan. Ini ditandai dengan garis putus-putus di dalam kotak, yang letaknya lebih tinggi pada grup yang diperlakukan.

Boxplot untuk sampel yang diperlakukan menunjukkan variasi data yang lebih besar, dengan nilai maksimal yang jauh lebih tinggi dibandingkan grup yang tidak diperlakukan. Whisker bawah pada grup yang diperlakukan juga menunjukkan nilai minimum yang lebih rendah, yang menandakan adanya variasi yang luas dalam respon terhadap perlakuan.

Sebaliknya, grup yang tidak diperlakukan memiliki boxplot yang lebih kompak, menunjukkan variabilitas yang lebih sedikit dalam nilai tingkat mereka. Hal ini dapat dilihat dari rentang antara kuartil atas dan bawah yang lebih kecil, serta whisker yang lebih pendek.

Scatterplot

plot_ly(data_puromycin, x = ~conc, y = ~rate, type = 'scatter', mode = 'markers', color = ~state)
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

Scatterplot ini memvisualisasikan hubungan antara konsentrasi Puromycin dan tingkat pertumbuhannya, dengan membedakan antara sampel yang diperlakukan (berwarna hijau) dan tidak diperlakukan (berwarna ungu). Dari grafik ini, kita dapat melihat bahwa dengan peningkatan konsentrasi Puromycin, ada kecenderungan peningkatan tingkat pertumbuhan untuk kedua kelompok sampel, tetapi dengan respon yang berbeda.

Untuk sampel yang diperlakukan, peningkatan tingkat pertumbuhan tampak lebih signifikan, terutama pada konsentrasi tinggi, menunjukkan bahwa Puromycin mungkin lebih efektif pada dosis yang lebih tinggi dalam meningkatkan tingkat pertumbuhan. Pada konsentrasi rendah, tingkat pertumbuhan juga meningkat tetapi dengan kecepatan yang lebih moderat.

Sementara itu, pada sampel yang tidak diperlakukan, tingkat pertumbuhan juga meningkat dengan peningkatan konsentrasi, namun kurva kenaikannya tidak sesteep kelompok yang diperlakukan, menandakan bahwa efek Puromycin kurang dramatis pada kelompok ini. Pada konsentrasi yang lebih tinggi, beberapa data menunjukkan tingkat yang serupa dengan kelompok yang diperlakukan, namun secara umum, pertumbuhannya lebih konsisten pada tingkat yang lebih rendah dibandingkan dengan kelompok yang diperlakukan.

Linechart

plot_ly(data_puromycin, x = ~conc, y = ~rate, type = 'scatter', mode = 'lines', color = ~state)
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

Grafik garis ini menggambarkan perubahan tingkat pertumbuhan berdasarkan konsentrasi Puromycin pada sampel yang diperlakukan dan tidak diperlakukan. Pada sumbu x, kita melihat konsentrasi Puromycin dari 0 hingga 1, dan pada sumbu y, kita melihat tingkat pertumbuhan. Dari grafik, terlihat bahwa tingkat pertumbuhan meningkat seiring dengan peningkatan konsentrasi Puromycin untuk kedua grup, diperlakukan dan tidak diperlakukan. Namun, grup yang diperlakukan (treated), yang direpresentasikan oleh garis hijau, menunjukkan peningkatan yang lebih tinggi dan lebih stabil dibandingkan dengan grup yang tidak diperlakukan (untreated), yang direpresentasikan oleh garis biru.

Secara khusus, grup yang diperlakukan mencapai tingkat pertumbuhan yang signifikan lebih tinggi pada konsentrasi 0.56 dan terus bertahan pada tingkat yang tinggi hingga konsentrasi maksimum 1.0. Sebaliknya, grup yang tidak diperlakukan mencapai tingkat maksimalnya pada konsentrasi 0.56 namun tidak menunjukkan peningkatan lebih lanjut pada konsentrasi yang lebih tinggi. Ini menunjukkan bahwa Puromycin memiliki efek yang lebih kuat dan lebih konsisten pada pertumbuhan ketika diberikan dalam dosis yang lebih tinggi pada sampel yang diperlakukan.

#Import Data Swiss

data_swiss = swiss
View(swiss)
plot_ly(data = swiss, x= ~Catholic, y= ~Fertility) %>% add_markers() %>% layout(xaxis = list(range = c(0,50)))
View(swiss)

Dataset swiss mencakup beberapa variabel yang menggambarkan kondisi sosial-ekonomi di wilayah Swiss. Dalam dataset ini, variabel Fertility menunjukkan tingkat kesuburan per 1.000 wanita di tiap wilayah. Tingkat kesuburan yang tinggi sering kali terkait dengan tingkat pendidikan yang lebih rendah atau keterbatasan akses terhadap layanan kesehatan. Variabel Education, yang menunjukkan persentase pria berpendidikan, umumnya berkaitan dengan pembangunan ekonomi; wilayah dengan persentase pendidikan yang tinggi cenderung memiliki tingkat kesuburan yang lebih rendah, menunjukkan adanya perkembangan ekonomi yang lebih baik.

Variabel Examination menunjukkan jumlah tes kesehatan, menjadi indikator dari ketersediaan layanan kesehatan. Ketersediaan layanan kesehatan yang baik biasanya terdapat di wilayah dengan pendidikan yang tinggi dan tingkat kesuburan yang lebih rendah. Variabel Agriculture menunjukkan persentase populasi yang bekerja di sektor pertanian. Wilayah dengan ketergantungan tinggi pada sektor pertanian cenderung memiliki tingkat kesuburan lebih tinggi dan persentase pendidikan yang lebih rendah, yang mengindikasikan tingkat perkembangan ekonomi yang lebih rendah.

Variabel Catholic mewakili persentase populasi Katolik di tiap wilayah, yang dapat mencerminkan aspek budaya dan tradisi setempat yang mempengaruhi variabel lain, seperti tingkat kesuburan. Meskipun data ini tidak secara langsung mencakup indikator ekonomi, kombinasi variabel-variabel tersebut memungkinkan analisis tentang hubungan antara perkembangan sosial-ekonomi dan demografi di wilayah Swiss. Interpretasi ini dapat membantu memahami karakteristik sosial dan ekonomi dari masing-masing wilayah berdasarkan indikator dalam dataset swiss.

library(tidyr)
## 
## Attaching package: 'tidyr'
## The following object is masked from 'package:magrittr':
## 
##     extract
library(ggplot2)
library(plotly)

#Stackbar Plot

plot_ly(swiss, x = ~Catholic, y = ~Fertility, type = 'bar', color = ~Infant.Mortality, colors = c("blue", "red")) %>%
  layout(barmode = 'stack')
## Warning: textfont.color doesn't (yet) support data arrays

## Warning: textfont.color doesn't (yet) support data arrays

Grafik yang ditampilkan menunjukkan hubungan antara persentase populasi Katolik (sumbu x) dan tingkat kesuburan (sumbu y) di berbagai wilayah di Swiss. Warna pada grafik menunjukkan proporsi populasi yang bekerja di sektor pertanian (Agriculture), dengan warna merah mewakili wilayah dengan proporsi tinggi dan warna biru untuk proporsi rendah.

Interpretasi dari grafik ini adalah bahwa wilayah dengan persentase populasi Katolik yang sangat tinggi (mendekati 100%) cenderung memiliki tingkat kesuburan yang lebih tinggi. Selain itu, wilayah yang didominasi oleh sektor pertanian juga menunjukkan tingkat kesuburan yang lebih tinggi, terlihat dari batang merah di sisi kiri grafik. Wilayah dengan persentase Katolik rendah atau menengah menunjukkan variasi yang lebih luas dalam tingkat kesuburan, dan beberapa di antaranya memiliki proporsi sektor pertanian yang lebih rendah (warna biru), yang mungkin berhubungan dengan tingkat kesuburan yang lebih rendah.

#Boxplot

plot_ly(swiss, y = ~Fertility, x = ~Catholic, type = 'box', boxmean = TRUE)

Boxplot ini menggambarkan distribusi tingkat fertilitas berdasarkan persentase penduduk Katolik di berbagai wilayah. Di sepanjang sumbu x, data dikelompokkan menurut kategori persentase penduduk Katolik, sementara sumbu y menunjukkan tingkat fertilitas di setiap kelompok tersebut. Melalui boxplot ini, kita dapat mengamati variasi tingkat fertilitas pada setiap kategori persentase Katolik, termasuk nilai median, rentang antar kuartil, dan outlier yang mungkin ada. Jika terdapat perbedaan pada median atau rentang antar kuartil di setiap kategori, ini bisa menunjukkan bahwa wilayah dengan persentase Katolik yang lebih tinggi mungkin memiliki tingkat fertilitas yang berbeda dibandingkan dengan wilayah dengan persentase Katolik yang lebih rendah. Outlier yang terlihat dalam boxplot ini juga mengindikasikan adanya wilayah-wilayah dengan tingkat fertilitas yang tidak biasa untuk persentase Katolik tertentu, seperti tingkat fertilitas yang sangat tinggi pada wilayah dengan persentase Katolik rendah atau sebaliknya.

Secara keseluruhan, jika median pada setiap kategori menunjukkan tren kenaikan atau penurunan seiring meningkatnya persentase penduduk Katolik, maka ini dapat mengindikasikan adanya hubungan antara persentase Katolik dan tingkat fertilitas. Namun, jika median tetap konstan di seluruh kelompok, hal ini menunjukkan bahwa hubungan antara persentase Katolik dan fertilitas cenderung lemah atau tidak signifikan.

#Scatterplot

plot_ly(swiss, x = ~Catholic, y = ~Fertility, type = 'scatter', mode = 'markers') %>%
  layout(title = "Scatter Plot of Catholic vs Fertility",
         xaxis = list(title = "Catholic"),
         yaxis = list(title = "Fertility"))

Scatter Plot ini menunjukkan korelasi positif antara persentase populasi Katolik dan tingkat fertilitas di provinsi-provinsi Swiss, dengan populasi Katolik yang lebih tinggi umumnya memiliki tingkat fertilitas yang lebih tinggi. Meskipun terdapat beberapa pencilan, tren ini menunjukkan faktor budaya atau sosial-ekonomi yang mempengaruhi ukuran keluarga di daerah yang mayoritas Katolik. Namun, analisis lebih lanjut diperlukan untuk menentukan apakah variabel lain, seperti pendidikan atau faktor ekonomi, juga mempengaruhi tingkat fertilitas.

#Linechart

plot_ly(swiss, x = ~Catholic, y = ~Fertility, type = 'scatter', mode = 'lines', color = ~Agriculture)
## Warning: line.color doesn't (yet) support data arrays

## Warning: line.color doesn't (yet) support data arrays

Plot ini menunjukkan korelasi positif antara persentase populasi Katolik dan tingkat fertilitas di provinsi-provinsi Swiss, dengan keterlibatan dalam sektor pertanian yang diwakili oleh warna. Keterlibatan pertanian yang lebih tinggi bervariasi dengan tingkat fertilitas, menunjukkan adanya interaksi yang kompleks. Garis-garis yang tidak beraturan mengindikasikan adanya pengaruh regional atau budaya, namun analisis lebih lanjut diperlukan untuk menjelaskan dampak spesifik dari sektor pertanian terhadap fertilitas.

titanic_df <- as.data.frame(Titanic)

plot_ly(data = titanic_df,x = ~Age, y= ~Freq,
        type = 'bar', color = ~Age, colors = 'Set2', 
        text = ~paste("Age: ", Age, "<br>Frequency: ", Freq),
        hoverinfo = 'text') %>%
  layout(title = 'Titanic Passengers Age Distribution',
         xaxis = list(title = 'Age'),
         yaxis = list(title = 'Frequency'),
         barmode = 'stack')

Diagram batang di atas menggambarkan distribusi usia penumpang Titanic, yang dibagi menjadi dua kategori: “Anak” dan “Dewasa.” Sumbu y menunjukkan frekuensi, atau jumlah individu, dalam setiap kategori usia. Berdasarkan diagram tersebut, mayoritas penumpang adalah dewasa, dengan frekuensi mencapai 2.000, jauh lebih tinggi dibandingkan kategori anak-anak yang hanya memiliki frekuensi 14. Perbedaan yang mencolok ini menunjukkan bahwa jumlah anak-anak di kapal Titanic jauh lebih sedikit dibandingkan dengan orang dewasa, yang mencerminkan distribusi usia yang tidak merata di antara penumpang. Hal ini bisa mencerminkan demografi penumpang yang bepergian dengan Titanic, karena pada masa itu lebih umum bagi orang dewasa dibandingkan anak-anak untuk melakukan perjalanan lintas Atlantik.

plot_ly(data = titanic_df, x = ~Freq, y= ~Class,
        type = 'scatter', mode = 'markers',  color = ~Class, colors = 'Set2', 
        text = ~paste("Class: ", Class, "<br>Age: ", Age, "<br>Freq: ", Freq),
        hoverinfo = 'text') %>%
  layout(title = 'Scatterplot of Freq vs  Passengers by Class',
         xaxis = list(title = 'Age'),
         yaxis = list(title = 'Frequency'),
         showlegend = TRUE)

Scatter Plot di atas menggambarkan hubungan antara usia penumpang dan frekuensi di berbagai kelas pada kapal Titanic, dengan setiap kelas diwakili oleh warna yang berbeda (kelas 1, kelas 2, kelas 3, dan Kru). Sumbu x menunjukkan usia, sedangkan sumbu y menunjukkan frekuensi penumpang di setiap kelas. Terlihat adanya outlier dengan usia yang sangat tinggi pada kelas 3 dan Kru, dengan beberapa titik data yang terletak jauh ke kanan pada grafik. Namun, sebagian besar titik data berkumpul di dekat sumbu y, yang menunjukkan bahwa banyak penumpang memiliki frekuensi yang relatif rendah di berbagai kelompok usia dan kelas. Penyebaran titik data yang jarang juga menunjukkan bahwa beberapa kelompok usia memiliki lebih sedikit penumpang, terutama di kelas 1 dan kelas 2, yang memiliki lebih sedikit titik data dibandingkan dengan kelas 3 dan Kru. Distribusi ini bisa mencerminkan faktor sosial-ekonomi yang memengaruhi demografi masing-masing kelas di kapal Titanic.

plot_ly(data = titanic_df, x= ~Freq, y= ~Age,
        type = 'box', color = ~Sex,
        boxmean = TRUE,
        text = ~paste("Class: ", Class, "<br>Age: ", Age),
        hoverinfo = 'text') %>%
  layout(title = 'Titanic Passengers Age Distribution',
         xaxis = list(title = 'Frequency'),
         yaxis = list(title = 'Age'),
         showlegend = FALSE)
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

Boxplot ini menampilkan distribusi usia penumpang Titanic, yang dibagi berdasarkan kelas dan kategori usia (Dewasa dan Anak). Sumbu x mewakili kelas penumpang, sementara sumbu y menunjukkan usia. Pada kategori dewasa, rentang antar kuartil (IQR) cukup lebar, yang mengindikasikan penyebaran usia yang luas, dengan beberapa outlier yang menjangkau usia lebih tua. Sebaliknya, kategori anak-anak memiliki rentang usia yang jauh lebih sempit, seperti yang diharapkan. Kotak dan garis whisker menunjukkan bahwa usia penumpang dewasa lebih bervariasi di setiap kelas, sementara anak-anak terkelompok dalam rentang yang lebih sempit. Terdapat outlier di ujung kanan grafik yang menunjukkan nilai usia yang sangat tinggi, yang mungkin mewakili seorang penumpang dewasa lanjut usia di kelas tertentu. Distribusi ini mencerminkan bahwa penumpang dewasa mendominasi di setiap kelas, dengan variasi usia yang signifikan dibandingkan dengan anak-anak.

titanic_df$Class <- as.factor(titanic_df$Class)
titanic_dfSurvived <- as.factor(titanic_df$Survived)

plot_ly(data = titanic_df, x = ~Age, y = ~Freq,
  color = ~Class, type = "scatter", mode = "lines+markers") %>%
  layout(
    title = "Line Chart of Age vs Frequency by Class",
    xaxis = list(title = "Age"),
    yaxis = list(title = "Frequency"),
    showlegend = TRUE)

Grafik garis ini menggambarkan distribusi penumpang Titanic di berbagai kelompok usia dan kelas penumpang. Terlihat bahwa mayoritas penumpang di semua kelas adalah orang dewasa, dengan penurunan signifikan dalam jumlah anak-anak. Kelas 1 dan kelas 2 memiliki proporsi orang dewasa yang lebih tinggi dibandingkan dengan kelas 3 dan kru. Hal ini menunjukkan bahwa kelas 1 dan kelas 2 lebih cenderung dihuni oleh orang dewasa, sedangkan kelas 3 dan kru memiliki distribusi usia yang lebih beragam.