Visualisasi Data dengan R

Klik disini untuk ke halaman rpubs.

Packages

Packages yang digunakan:

install.packages(c("tidyverse", "ggridges", "GGally", "plotly"), dependencies = TRUE)

Melakukan pemanggilan package yang akan digunakan:

library(tidyverse)
library(ggridges)
library(GGally)
library(plotly)     # Untuk membuat plot interaktif
library(grid)       # Akan diperlukan untuk fungsi `arrange`

Data

Data yang digunakan pada praktikum kali ini adalah data House Price Prediction yang memiliki 36 kolom.

Berikut adalah informasi singkat mengenai data

The real estate markets, like those in Sydney and Melbourne, present an interesting opportunity for data analysts to analyze and predict where property prices are moving towards. Prediction of property prices is becoming increasingly important and beneficial. Property prices are a good indicator of both the overall market condition and the economic health of a country. Considering the data provided, we are wrangling a large set of property sales records stored in an unknown format and with unknown data quality issues

data_house<-read.csv("D:/Kuliah Bunda IPB S2/Bahan Kuliah/Semester 1 SSD 2020/05 Sains Data/R/house_price.csv", header = TRUE, sep=",")

Opsi : - header = TRUE digunakan untuk menjadikan header / baris pertama sebagai nama variabel

  • sep="," digunakan untuk memisahkan data dengan separator koma (,), perlu diperhatikan, ada beberapa format .csv yang menggunakan titik koma (;) sebagai separator.
head(data_house)
##                  date   price bedrooms bathrooms sqft_living sqft_lot floors
## 1 2014-05-02 00:00:00  313000        3      1.50        1340     7912    1.5
## 2 2014-05-02 00:00:00 2384000        5      2.50        3650     9050    2.0
## 3 2014-05-02 00:00:00  342000        3      2.00        1930    11947    1.0
## 4 2014-05-02 00:00:00  420000        3      2.25        2000     8030    1.0
## 5 2014-05-02 00:00:00  550000        4      2.50        1940    10500    1.0
## 6 2014-05-02 00:00:00  490000        2      1.00         880     6380    1.0
##   waterfront view condition sqft_above sqft_basement yr_built yr_renovated
## 1          0    0         3       1340             0     1955         2005
## 2          0    4         5       3370           280     1921            0
## 3          0    0         4       1930             0     1966            0
## 4          0    0         4       1000          1000     1963            0
## 5          0    0         4       1140           800     1976         1992
## 6          0    0         3        880             0     1938         1994
##                     street      city statezip country
## 1     18810 Densmore Ave N Shoreline WA 98133     USA
## 2          709 W Blaine St   Seattle WA 98119     USA
## 3 26206-26214 143rd Ave SE      Kent WA 98042     USA
## 4          857 170th Pl NE  Bellevue WA 98008     USA
## 5        9105 170th Ave NE   Redmond WA 98052     USA
## 6           522 NE 88th St   Seattle WA 98115     USA

Untuk mempermudah visualisasi beberapa bagian dalam Praktikum ini, digunakan fungsi arrange yang dibuat oleh Stephen Turner

vp.layout <- function(x, y) viewport(layout.pos.row=x, layout.pos.col=y)
arrange <- function(..., nrow=NULL, ncol=NULL, as.table=FALSE) {
  dots <- list(...)
  n <- length(dots)
  if(is.null(nrow) & is.null(ncol)) { nrow = floor(n/2) ; ncol = ceiling(n/nrow)}
  if(is.null(nrow)) { nrow = ceiling(n/ncol)}
  if(is.null(ncol)) { ncol = ceiling(n/nrow)}
  ## NOTE see n2mfrow in grDevices for possible alternative
  grid.newpage()
  pushViewport(viewport(layout=grid.layout(nrow,ncol) ) )
  ii.p <- 1
  for(ii.row in seq(1, nrow)){
    ii.table.row <- ii.row
    if(as.table) {ii.table.row <- nrow - ii.table.row + 1}
    for(ii.col in seq(1, ncol)){
      ii.table <- ii.p
      if(ii.p > n) break
      print(dots[[ii.table]], vp=vp.layout(ii.table.row, ii.col))
      ii.p <- ii.p + 1
    }
  }
}

Membuat Grafik

Secara umum pembuatan grafik pada package ggplot2 dapat dilakukan dengan menggunakan dua cara yaitu:

qplot(x,y,geom="xxx")

ggplot()+geom_xxx(aes(x,y)

Scatter Plot

set.seed(581)
vectorx<-rnorm(10, mean=5, sd=1)
vectory<-rnorm(10, mean=5, sd=1)
a1<-qplot(x=vectorx,
          y=vectory,
          geom = "point")

a2<-ggplot()+
  geom_point(aes(x=vectorx,
                 y=vectory))

arrange(a1,a2)

Memberi Plot Title

b1<-qplot(x=vectorx,
          y=vectory,
          geom = "point",
          main="qplot")

b2<-ggplot()+
  geom_point(aes(x=vectorx,
                 y=vectory))+
  labs(title="ggplot2")

arrange(b1,b2)

Mengubah Axis Label

c1<-qplot(x=vectorx,
          y=vectory,
          geom = "point",
          main="qplot",
          xlab = "Label Axis X",
          ylab="Label Axis Y")

c2<-ggplot()+
  geom_point(aes(x=vectorx,
                 y=vectory))+
  labs(title="ggplot2")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")

arrange(c1,c2)

Mengubah Axis Limits

d1<-qplot(x=vectorx,
          y=vectory,
          geom = "point",
          main="qplot",
          xlab = "Label Axis X",
          ylab="Label Axis Y",
          xlim=c(-5,20),
          ylim=c(-10,30))

d2<-ggplot()+
  geom_point(aes(x=vectorx,
                 y=vectory))+
  labs(title="ggplot2")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")+
  xlim(-5,20)+
  ylim(-10,30)

arrange(d1,d2)

Memberi Warna Titik

Perlu berhati-hati dalam menaruh colour="" dalam ggplot2 karena bisa terjadi seperti berikut ini :

e1<-qplot(x=vectorx,
          y=vectory,
          geom = "point",
          colour="blue",
          main="qplot",
          xlab = "Label Axis X",
          ylab="Label Axis Y")

e2<-ggplot()+
  geom_point(aes(x=vectorx,
                 y=vectory,
                 colour="blue"))+
  labs(title="ggplot2")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")

arrange(e1,e2)

colour="blue", dibaca sebagai pewarna kategori, sedangkan warnanya diambil warna default kategori, jika ingin mewarnai titik, maka

e3<-qplot(x=vectorx,
          y=vectory,
          geom = "point",
          colour="isiapapunlah",
          main="qplot",
          xlab = "Label Axis X",
          ylab="Label Axis Y")+
  scale_colour_manual(values = c("blue"))+
  theme(legend.position="none")

e4<-ggplot()+
  geom_point(aes(x=vectorx,
                 y=vectory),
             colour="blue")+
  labs(title="ggplot2")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")

arrange(e3,e4)

Anda bisa juga memberi warna dengan metode lain, namun Anda perlu membuat vectorx dan vectory dalam suatu data frame.

data_sim<-cbind.data.frame(vectorx, vectory)
e5<-qplot(x=vectorx,
          y=vectory,
          geom = "point",
          data=data_sim,
          colour=factor(vectorx),
          main="qplot",
          xlab = "Label Axis X",
          ylab="Label Axis Y")

e6<-ggplot()+
  geom_point(aes(x=vectorx,
                 y=vectory,
                 colour=factor(vectorx)),
             data=data_sim)+
  labs(title="ggplot2")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")

arrange(e5,e6)

Jika Variasi Warna Anda rasa terlalu banyak, Anda bisa memanfaatkan fungsi round.

e7<-qplot(x=vectorx,
          y=vectory,
          geom = "point",
          data=data_sim,
          colour=factor(round(vectorx)),
          main="qplot",
          xlab = "Label Axis X",
          ylab="Label Axis Y")

e8<-ggplot()+
  geom_point(aes(x=vectorx,
                 y=vectory,
                 colour=factor(round(vectorx))),
             data=data_sim)+
  labs(title="ggplot2")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")

arrange(e7,e8)

Mengubah Bentuk Titik

f1<-qplot(x=vectorx,
          y=vectory,
          geom = "point",
          data=data_sim,
          colour=factor(round(vectorx)),
          shape =factor(vectorx),
          main="qplot",
          xlab = "Label Axis X",
          ylab="Label Axis Y")

f2<-ggplot()+
  geom_point(aes(x=vectorx,
                 y=vectory,
                 colour=factor(round(vectorx)),
                 shape =factor(vectorx)),
             data=data_sim)+
  labs(title="ggplot2")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")

arrange(f1,f2)
## Warning: The shape palette can deal with a maximum of 6 discrete values because
## more than 6 becomes difficult to discriminate; you have 10. Consider
## specifying shapes manually if you must have them.
## Warning: Removed 4 rows containing missing values (geom_point).
## Warning: The shape palette can deal with a maximum of 6 discrete values because
## more than 6 becomes difficult to discriminate; you have 10. Consider
## specifying shapes manually if you must have them.
## Warning: Removed 4 rows containing missing values (geom_point).

Dapat dilihat, bahwa ggplot2 mempunyai batasan mengenai banyaknya bentuk titik yang ditampilkan.

f3<-qplot(x=vectorx,
          y=vectory,
          geom = "point",
          data=data_sim,
          colour=factor(round(vectorx)),
          shape =factor(round(vectorx)),
          main="qplot",
          xlab = "Label Axis X",
          ylab="Label Axis Y")

f4<-ggplot()+
  geom_point(aes(x=vectorx,
                 y=vectory,
                 colour=factor(round(vectorx)),
                 shape =factor(round(vectorx))),
             data=data_sim)+
  labs(title="ggplot2")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")

arrange(f3,f4)

Mengubah Ukuran Titik

g1<-qplot(x=vectorx,
          y=vectory,
          geom = "point",
          data=data_sim,
          size =vectorx,
          main="qplot",
          xlab = "Label Axis X",
          ylab="Label Axis Y")

g2<-ggplot()+
  geom_point(aes(x=vectorx,
                 y=vectory,
                 size = vectorx),
             data=data_sim)+
  labs(title="ggplot2")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")

arrange(g1,g2)

Menggabungkan Lebih dari Satu Geom

ggplot2 memiliki banyak geom yang bisa digunakan sesuai dengan keperluan, diantaranya adalah

Geom Description DefaultStat

geom_bar() Bar chart stat_bin()

geom_point() Scatterplot stat_identity()

geom_line() Line diagram, connecting observations in order by x-value stat_identity()

geom_boxplot Box-and-whisker plot stat_boxplot()

geom_path Line diagram, connecting observations in original order stat_identity()

geom_smooth Add a smoothed conditioned mean stat_smooth()

geom_histogram An alias for geom_bar() and stat_bin() stat_bin()

geom_poin dan geom_line

## digabungkan geom_poin dan geom_line
h1<-qplot(x=vectorx,
          y=vectory,
          geom = c("point", "line"),
          data=data_sim,
          main="qplot",
          xlab = "Label Axis X",
          ylab="Label Axis Y")

h2<-ggplot(aes(x=vectorx,
                 y=vectory),
             data=data_sim)+
  geom_point()+
  geom_line()+
  labs(title="ggplot2")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")

arrange(h1,h2)

geom_point dan geom_smooth

h3<-qplot(x=vectorx,
          y=vectory,
          geom = c("point", "smooth"),
          data=data_sim,
          main="qplot",
          xlab = "Label Axis X",
          ylab="Label Axis Y")

h4<-ggplot(aes(x=vectorx,
                 y=vectory),
             data=data_sim)+
  geom_point()+
  geom_smooth()+
  labs(title="ggplot2")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")

arrange(h3,h4)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

geom_smooth sebenarnya memerlukan minimal dua opsi lain, yaitu:

  • method

  • formula

Berikut adalah contoh graphic dengan opsi yang lain

h5<-ggplot(aes(x=vectorx,
                 y=vectory),
             data=data_sim)+
  geom_point()+
  geom_smooth(method="loess", formula=y~x)+
  labs(title="loess : y~x")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")

h6<-ggplot(aes(x=vectorx,
                 y=vectory),
             data=data_sim)+
  geom_point()+
  geom_smooth(method="loess", formula=y~log(x))+
  labs(title="loess : y~log(x)")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")

h7<-ggplot(aes(x=vectorx,
                 y=vectory),
             data=data_sim)+
  geom_point()+
  geom_smooth(method="lm", formula=y~x)+
  labs(title="lm : y~x")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")

h8<-ggplot(aes(x=vectorx,
                 y=vectory),
             data=data_sim)+
  geom_point()+
  geom_smooth(method="lm", formula=y~log(x))+
  labs(title="lm : y~log(x)")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")
arrange(h5,h6, h7, h8)

Menggunakan Theme

i1<-ggplot(aes(x=vectorx,
                 y=vectory),
             data=data_sim)+
  geom_point()+
  geom_smooth(method="lm", formula=y~log(x))+
  labs(title="theme_bw()")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")+
  theme_bw()

i2<-ggplot(aes(x=vectorx,
                 y=vectory),
             data=data_sim)+
  geom_point()+
  geom_smooth(method="lm", formula=y~log(x))+
  labs(title="theme_dark()")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")+
  theme_dark()

i3<-ggplot(aes(x=vectorx,
                 y=vectory),
             data=data_sim)+
  geom_point()+
  geom_smooth(method="lm", formula=y~log(x))+
  labs(title="theme_classic()")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")+
  theme_classic()

i4<-ggplot(aes(x=vectorx,
                 y=vectory),
             data=data_sim)+
  geom_point()+
  geom_smooth(method="lm", formula=y~log(x))+
  labs(title="theme_minimal()")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")+
  theme_minimal()

i5<-ggplot(aes(x=vectorx,
                 y=vectory),
             data=data_sim)+
  geom_point()+
  geom_smooth(method="lm", formula=y~log(x))+
  labs(title="theme_light()")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")+
  theme_light()

i6<-ggplot(aes(x=vectorx,
                 y=vectory),
             data=data_sim)+
  geom_point()+
  geom_smooth(method="lm", formula=y~log(x))+
  labs(title="theme_linedraw()")+
  xlab("Label Axis X")+
  ylab("Label Axis Y")+
  theme_linedraw()

arrange(i1,i2, i3, i4, i5, i6)

Visualisasi Distribusi

Pada Subbagaian Data, sudah kta import data dari github dengan nama data_house.

head(data_house)
##                  date   price bedrooms bathrooms sqft_living sqft_lot floors
## 1 2014-05-02 00:00:00  313000        3      1.50        1340     7912    1.5
## 2 2014-05-02 00:00:00 2384000        5      2.50        3650     9050    2.0
## 3 2014-05-02 00:00:00  342000        3      2.00        1930    11947    1.0
## 4 2014-05-02 00:00:00  420000        3      2.25        2000     8030    1.0
## 5 2014-05-02 00:00:00  550000        4      2.50        1940    10500    1.0
## 6 2014-05-02 00:00:00  490000        2      1.00         880     6380    1.0
##   waterfront view condition sqft_above sqft_basement yr_built yr_renovated
## 1          0    0         3       1340             0     1955         2005
## 2          0    4         5       3370           280     1921            0
## 3          0    0         4       1930             0     1966            0
## 4          0    0         4       1000          1000     1963            0
## 5          0    0         4       1140           800     1976         1992
## 6          0    0         3        880             0     1938         1994
##                     street      city statezip country
## 1     18810 Densmore Ave N Shoreline WA 98133     USA
## 2          709 W Blaine St   Seattle WA 98119     USA
## 3 26206-26214 143rd Ave SE      Kent WA 98042     USA
## 4          857 170th Pl NE  Bellevue WA 98008     USA
## 5        9105 170th Ave NE   Redmond WA 98052     USA
## 6           522 NE 88th St   Seattle WA 98115     USA

Histogram

Selanjutnya, misalkan saja kita ingin melihat bagaimana distribusi atau sebaran dari harga rumah yang disini ada di kolom price. Grafik yang sering digunakan adalah histogram.

ggplot(data_house) +
  geom_histogram(aes(x = price),fill="darkred",col="darkred",binwidth = 5000) +
  ggtitle("Histogram Harga Rumah") +
  ylab("Jumlah Rumah") +
  xlab("Harga Rumah") + 
  theme(plot.title = element_text(hjust = 0.5))

Argumen fill digunakan untuk memberi warna pada histogram, sedangkan argumen binwidth digunakan untuk mengatur ukuran bin/kotak pada boxplot. Fungsi ggtitle digunakan untuk memberi judul pada grafik, sedangkan fungsi ylab dan xlab untuk memberikan nama pada sumbu y dan sumbu x. Terakhir fungsi argumen plot.title digunakan untuk mengatur bagaimana tampilan dari tulisan judul pada plot, seperti posisi, ukuran font dan jenis font.

Berdasarkan histogram tersebut bisa diperoleh informasi bahwa terdapat harga rumah yang sangat mahal dibandingkan dengan harga rumah mayoritas.

Boxplot

Jika Lita ingin melihat bagaimana perbandingan distribusi pada beberapa peubah, maka boxplot adalah salah plot yang paling umum digunakan. Pada ilustrasi ini kita akan membandingkan distribusi harga rumah dari 10 kota. Oleh karena itu, langkah pertama yang kita lakukan adalah menyaring ke-10 kota tersebut menggunakan fungsi filter.

data_house%>%
  filter(city %in% c("Shoreline","Seattle"
                     ,"Auburn","Duvall","Burien",
                     "Tukwila","Vashon","Yarrow Point",
                     "SeaTac","Medina")
         )%>%
  ggplot() +
  geom_boxplot(aes(x = city,y = price,fill=city),show.legend = F) +
  ggtitle("Sebaran Harga Rumah Setiap Kota") +
  ylab("Harga Rumah") +
  xlab("Kota") + 
  theme(plot.title = element_text(hjust = 0.5))+
  theme_bw()

Hal yang perlu diperhatikan untuk membuat boxplot beberapa peubah atau kelompok adalah nama-nama peubah atau kelompok itu harus ada dalam satu kolom yang bertipe character atau factor. Kemudian argumen x di dalam fungsi aes disi adengan nama kolom yang isinya nama-nama peubah atau kelompok tersebut. Jika ingin memberikan warna yang beda-beda pada boxplot maka argumen fill harus diletakan dalam fungsi aes dan diisi dengan nama kolom yang isinya nama-nama peubah atau kelompok tersebut. Namun, Rumah dengan harga yang paling tinggi diantara 10 kota tersebut berada di kota Seattle.

Berdasarkan boxplot tersebut bahwa harga rumah di kota Medina secara umum lebih tinggi dibandingkan dengan sembilan kota lainnya.

Ridge Line

Plot alternative lain untuk membandingkan distribusi data adalah plot Ridgeline, yang mirip seperti histogram. Plot ridgeline bisa dijalankan dalam R dengan menggunakan fungsi geom_density_ridges dari package ggridges. Isi argumenya mirip seperti pada saat pembuatan plot boxplot.

data_house%>%
  filter(city %in% c("Shoreline","Seattle"
                     ,"Auburn","Duvall","Burien",
                     "Tukwila","Vashon","Yarrow Point",
                     "SeaTac","Medina")
         )%>%
  ggplot() +
  geom_density_ridges(aes(y = city,x = price,fill=city), show.legend = F) +
  ggtitle("Sebaran Harga Rumah Setiap Kota") +
  ylab("Kota") +
  xlab("Harga Rumah") + 
  theme(plot.title = element_text(hjust = 0.5))+
  theme_bw()
## Picking joint bandwidth of 133000

Berdasarkan plot ridgeline ini semakin jelas bahwa Kota Medina memiliki harga rumah yang secara umum lebih mahal dibandingkan kota-kota lainnya. Namun informasi harga rumah termahal yang ada di kota Seatle tidak tertangkap disini.

Visualisasi Jumlah

Bar Plot

Plot yang paling sering digunakan memandingkan jumlah dari beberapa kategori adalah bar plot atau bar chart atau diagram batang. Dalam package ggplot2 bar plot ini bisa ditampilkan menggunakan geom_bar atau geom_col. Perbedaan mendasar dari kedua fungsi itu adalah data yang perlu disediakan. Fungsi geom_bar hanya membutuhkan satu kolom saja (dengan tipe data character atau factor), sedangkan geom_col membutuhkan dua kolom data yaitu nama kategori dan jumlah setiap kategori.

data_house%>%count(city)%>%
  ggplot()+
  geom_col(aes(x=fct_reorder(as.factor(city),n),y=n), fill="steelblue", 
           width=0.4) +
    scale_y_continuous(expand = c(0,0))+
    coord_flip() +
    ggtitle("Jumlah Rumah Setiap Kota") +
    xlab("") +
    ylab("Jumlah Rumah") +
    theme(plot.title = element_text(hjust = 0.5))+
    theme_classic()

Mungsi fct_reorder digunakan untuk mengurutkan kategori berdasarkan nilai tertentu. Kemudian, sintaks scale_y_continuous(expand = c(0,0)) digunakan agar barplot dimulai dari nol. Fungsi coord_flip digunakan untu menukar sumbu x dan sumbu y.

Lolipop Chart

Plot alternative dari bar chart adalah lolipop chart. Seperti namanya plot ini terinspirasi dari permen lolipop. Untuk membuat plot ini dibutuhkan dua fungsi yaitu geom_segment dan juga geom_point.

Fungsi geom_segment digunakan untuk menggambarkan garis sedangkan fungsi geom_point digunakan untuk menggambarkan titik.

data_house%>%count(city)%>%
  mutate(city=fct_reorder(as.factor(city),desc(n)))%>%
  ggplot()+
  geom_segment(aes(x=city,xend=city, y=0, yend=n), color="skyblue")+
  geom_point(aes(x=city,y=n),color="steelblue", size=2)+ 
    scale_y_continuous(expand = c(0,0))+
    coord_flip() +
    ggtitle("Jumlah Rumah Setiap Kota") +
    xlab("") +
    ylab("Jumlah Rumah") +
    theme(plot.title = element_text(hjust = 0.5))

Visualisasi Korelasi

Diagram Pencar

Korelasi atau hubungan dari dua peubah bisa kita visualisasikan menggunakan scatterplot. Jika scatterplot membentuk pola garis maka bisa dikatakan bahwa kedua peubah tersebut memiliki korelasi yang kuat.

ggplot(data_house) +
  geom_point(aes(x = sqft_living,y = price),color="steelblue",size=2) +
  ggtitle("Scatter Plot Harga Rumah vs Luas Rumah") +
  ylab("Luas Rumah") +
  xlab("Harga Rumah") + 
  theme(plot.title = element_text(hjust = 0.5))

Correlogram

Penggunaan scatterplot memiliki keterbatasan jika korelasi peubah yang ingin dilihat ada banyak. Coreelogram bisa digunakan untuk mengatasi hal tersebut. Correlogram ini membuat grafik berdasarkan nilai koefisien korelasi yang dikonversikan dalam bentuk warna.

GGally::ggcorr(data_house, method = c("everything","pearson"),geom = "tile") 
## Warning in GGally::ggcorr(data_house, method = c("everything", "pearson"), :
## data in column(s) 'date', 'street', 'city', 'statezip', 'country' are not
## numeric and were ignored

Plot Interaktif

Bagian terakhir ini kita akan membuat plot interaktif dari grafik ggplot yang sudah dibuat. Untuk membuat plot interaktif dari ggplot2 kita bisa menggunakan fungsi ggplotly yang berasal dari package plotly.

p1 <- ggplot(data_house) +
  geom_point(aes(x = sqft_living,y = price),color="steelblue",size=2) +
  ggtitle("Scatter Plot Harga Rumah vs Luas Rumah") +
  ylab("Luas Rumah") +
  xlab("Harga Rumah") + 
  theme(plot.title = element_text(hjust = 0.5))
ggplotly(p1)

Referensi

Dito, G.A. (September 22, 2020). Visualisasi Data. Retrieved from https://github.com/gerrydito/Sains-Data-S2.git

Nurussadad, A.A. (March 3, 2021). Visualisasi Data dengan ggplot2. Retrieved from https://rpubs.com/nurussadad/STA581-04-ggplot2

Soleh, A.M. (2021). STA581 Sains Data: Visualisasi Data. Retrieved from https://newlms.ipb.ac.id/


  1. Praktikum 4 STA581 Sains Data,Mahasiswa Pascasarjana Statistika dan Sains Data, IPB University, reniamelia@apps.ipb.ac.id