Input Data

Package {ggplot2} juga menyediakan beberapa dataframe yang dapat digunakan untuk latihan. Salah satu dataframe yang disediakan adalah CO2, bingkai data memiliki 84 baris dan 5 kolom data dari percobaan toleransi dingin spesies rumput Echinochloa crus-galli..

library(ggplot2)
data(CO2)
head(CO2)
##   Plant   Type  Treatment conc uptake
## 1   Qn1 Quebec nonchilled   95   16.0
## 2   Qn1 Quebec nonchilled  175   30.4
## 3   Qn1 Quebec nonchilled  250   34.8
## 4   Qn1 Quebec nonchilled  350   37.2
## 5   Qn1 Quebec nonchilled  500   35.3
## 6   Qn1 Quebec nonchilled  675   39.2
dim(CO2)
## [1] 84  5
CO2
##    Plant        Type  Treatment conc uptake
## 1    Qn1      Quebec nonchilled   95   16.0
## 2    Qn1      Quebec nonchilled  175   30.4
## 3    Qn1      Quebec nonchilled  250   34.8
## 4    Qn1      Quebec nonchilled  350   37.2
## 5    Qn1      Quebec nonchilled  500   35.3
## 6    Qn1      Quebec nonchilled  675   39.2
## 7    Qn1      Quebec nonchilled 1000   39.7
## 8    Qn2      Quebec nonchilled   95   13.6
## 9    Qn2      Quebec nonchilled  175   27.3
## 10   Qn2      Quebec nonchilled  250   37.1
## 11   Qn2      Quebec nonchilled  350   41.8
## 12   Qn2      Quebec nonchilled  500   40.6
## 13   Qn2      Quebec nonchilled  675   41.4
## 14   Qn2      Quebec nonchilled 1000   44.3
## 15   Qn3      Quebec nonchilled   95   16.2
## 16   Qn3      Quebec nonchilled  175   32.4
## 17   Qn3      Quebec nonchilled  250   40.3
## 18   Qn3      Quebec nonchilled  350   42.1
## 19   Qn3      Quebec nonchilled  500   42.9
## 20   Qn3      Quebec nonchilled  675   43.9
## 21   Qn3      Quebec nonchilled 1000   45.5
## 22   Qc1      Quebec    chilled   95   14.2
## 23   Qc1      Quebec    chilled  175   24.1
## 24   Qc1      Quebec    chilled  250   30.3
## 25   Qc1      Quebec    chilled  350   34.6
## 26   Qc1      Quebec    chilled  500   32.5
## 27   Qc1      Quebec    chilled  675   35.4
## 28   Qc1      Quebec    chilled 1000   38.7
## 29   Qc2      Quebec    chilled   95    9.3
## 30   Qc2      Quebec    chilled  175   27.3
## 31   Qc2      Quebec    chilled  250   35.0
## 32   Qc2      Quebec    chilled  350   38.8
## 33   Qc2      Quebec    chilled  500   38.6
## 34   Qc2      Quebec    chilled  675   37.5
## 35   Qc2      Quebec    chilled 1000   42.4
## 36   Qc3      Quebec    chilled   95   15.1
## 37   Qc3      Quebec    chilled  175   21.0
## 38   Qc3      Quebec    chilled  250   38.1
## 39   Qc3      Quebec    chilled  350   34.0
## 40   Qc3      Quebec    chilled  500   38.9
## 41   Qc3      Quebec    chilled  675   39.6
## 42   Qc3      Quebec    chilled 1000   41.4
## 43   Mn1 Mississippi nonchilled   95   10.6
## 44   Mn1 Mississippi nonchilled  175   19.2
## 45   Mn1 Mississippi nonchilled  250   26.2
## 46   Mn1 Mississippi nonchilled  350   30.0
## 47   Mn1 Mississippi nonchilled  500   30.9
## 48   Mn1 Mississippi nonchilled  675   32.4
## 49   Mn1 Mississippi nonchilled 1000   35.5
## 50   Mn2 Mississippi nonchilled   95   12.0
## 51   Mn2 Mississippi nonchilled  175   22.0
## 52   Mn2 Mississippi nonchilled  250   30.6
## 53   Mn2 Mississippi nonchilled  350   31.8
## 54   Mn2 Mississippi nonchilled  500   32.4
## 55   Mn2 Mississippi nonchilled  675   31.1
## 56   Mn2 Mississippi nonchilled 1000   31.5
## 57   Mn3 Mississippi nonchilled   95   11.3
## 58   Mn3 Mississippi nonchilled  175   19.4
## 59   Mn3 Mississippi nonchilled  250   25.8
## 60   Mn3 Mississippi nonchilled  350   27.9
## 61   Mn3 Mississippi nonchilled  500   28.5
## 62   Mn3 Mississippi nonchilled  675   28.1
## 63   Mn3 Mississippi nonchilled 1000   27.8
## 64   Mc1 Mississippi    chilled   95   10.5
## 65   Mc1 Mississippi    chilled  175   14.9
## 66   Mc1 Mississippi    chilled  250   18.1
## 67   Mc1 Mississippi    chilled  350   18.9
## 68   Mc1 Mississippi    chilled  500   19.5
## 69   Mc1 Mississippi    chilled  675   22.2
## 70   Mc1 Mississippi    chilled 1000   21.9
## 71   Mc2 Mississippi    chilled   95    7.7
## 72   Mc2 Mississippi    chilled  175   11.4
## 73   Mc2 Mississippi    chilled  250   12.3
## 74   Mc2 Mississippi    chilled  350   13.0
## 75   Mc2 Mississippi    chilled  500   12.5
## 76   Mc2 Mississippi    chilled  675   13.7
## 77   Mc2 Mississippi    chilled 1000   14.4
## 78   Mc3 Mississippi    chilled   95   10.6
## 79   Mc3 Mississippi    chilled  175   18.0
## 80   Mc3 Mississippi    chilled  250   17.9
## 81   Mc3 Mississippi    chilled  350   17.9
## 82   Mc3 Mississippi    chilled  500   17.9
## 83   Mc3 Mississippi    chilled  675   18.9
## 84   Mc3 Mississippi    chilled 1000   19.9

Histogram

Untuk membuat histogram pada package {ggplot2} menggunakan perintah geom_histogram(). Variable yang digunakan yaitu uptake pada data CO2

ggplot(data = CO2, mapping = aes(x = uptake)) + 
  geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Secara defaut, geom_histogram() menggunakan 50 bins (batang). Selanjutnya mengganti nilai bins tersebut dengan menambahkan argumen bins = 50. Hasilnya sebagai berikut.

ggplot(data = CO2, mapping = aes(x = uptake)) + 
  geom_histogram(bins = 50)

Kita dapat memberikan pemisah dengan warna putih Anda dapat tambahkan argumen color = "green". Hasilnya sebagai berikut.

ggplot(data = CO2, mapping = aes(x = uptake)) + 
  geom_histogram(bins = 50, color = "green")

Kita dapat mengubah warna batang dengan menggunakan argumen fill, mengubah format penulisan nilai pada sumbu x dan y menggunakan function scale_x_continuous() untuk sumbu x dan scale_y_continuous() untuk sumbu y dan mengubah nama label pada sumbu x dan y dengan fungsi labs. Hasilnya sebagai berikut.

library(scales)
ggplot(data = CO2, mapping = aes(x = uptake)) + 
  geom_histogram(bins = 100, color = "green", fill = "black") + 
  scale_x_continuous(labels = comma) + 
  scale_y_continuous(labels = comma) + 
  labs(x = "penyerapan", 
       y = "Frekuensi")

Desnity Plot

Untuk membuat density plot menggunakan ggplot2 kita cukup menggunakan function geom_density()

ggplot(data = CO2, mapping = aes(x = uptake)) + 
  geom_density()

Untuk mengatur warna, transaparansi, format penulisan nilai pada sumbu x dan y, dan labeling sumbu x sama seperti pembuatan Histogram. Hasilnya sebagai berikut.

ggplot(data = CO2, mapping = aes(x = uptake)) + 
  geom_density(fill = "yellow", alpha = 0.7) + 
  scale_x_continuous(labels = comma) + 
  scale_y_continuous(labels = comma) + 
  labs(x = "kecepatan")

ggplot(data = CO2, mapping = aes(x = uptake, fill = Plant, color = Plant)) + 
  geom_density(alpha = 0.22) + 
  scale_x_continuous(labels = comma) + 
  scale_y_continuous(labels = comma) + 
  labs(x = "penyerapan")

library(ggridges)
ggplot(data = CO2, mapping = aes(x = uptake, y= Plant,fill = Plant)) + 
  geom_density_ridges() + 
  labs(x = "penyerapan", y = "Tanaman")
## Picking joint bandwidth of 2.85

Boxplot

Untuk membuat boxplot di ggplot2 kita dapat gunakan function geom_boxplot()

ggplot(data = CO2, mapping = aes(x = uptake)) + 
  geom_boxplot()

Membuat boxplot secara vertikal menggunakan perintah coord_flip(). Hasilnya sebagai berikut.

ggplot(data = CO2, mapping = aes(x = uptake)) + 
  geom_boxplot()+
  coord_flip()

kita dapat membuat boxplot dari data numerik dan membandingkan sebarannya berdasarkan kategori. Misalnya kita ingin membandingkan sebaran data CO2 berdasarkan tingkat warna (color). Hasilnya sebagai berikut.

ggplot(data = CO2, mapping = aes(x = uptake, y = Plant)) + 
  geom_boxplot()

Selanjutnya memberi warna berbeda untuk setiap box berdasarkan kategorinya. Kita dapat menambahkan argumen fill dengan nilai berupa nama variabel dari kategori yang ingin kita gunkan untuk perbandingan boxplot. Misalnya kita ingin membandingkan sebaran dari variabel penyerapan (uptake) berdasarkan warnanya (color) menggunakan boxplot dan menyesuaikan warnanya berdasarkan kategori dari color. Hasilnya sebagai berikut.

ggplot(data = CO2, mapping = aes(x = uptake, y = Plant, fill = Plant)) + 
  geom_boxplot()

Untuk menghilangkan legend dari color kita dapat tambahkan theme(legend.position = “none”).Hasilnya sebagai berikut.

ggplot(data = CO2, mapping = aes(x = uptake, y = Plant, fill = Plant)) + 
  geom_boxplot() + 
  theme(legend.position = "none")

Violin Plot

Plot ini dibentuk dengan menggabungkan antara Density Plot dengan boxplot. Hasilnya sebagai berikut.

ggplot(data = CO2, mapping = aes(x = uptake ,y= Plant)) +
  geom_violin(fill="green",alpha=0.3) +
  geom_boxplot(fill="black",width=0.2)+
  scale_x_continuous(labels = comma)

QQ-Plot

Plot ini berguna untuk memeriksa apakah sebaran data (sebaran empirik) memiliki bentuk yang sama dengan sebaran tertentu yang dispesifikan (sebaran hipotetik). Misalnya kita ingin melihat pola sebaran penyerapan (uptake). apakah menyebar normal atau tidak.

ggplot(data = CO2, aes(sample = uptake)) +
  stat_qq(col="blue", cex=2) +
  stat_qq_line(col="red", lwd=1)

Scatter plot

Untuk membuat scatter plot menggunakan ggplot2 kita dapat menggunakan geom_point(). Misalnya kita ingin melihat pola sebaran antara uptake dan Plant

ggplot(data = CO2, mapping = aes(x = uptake, y = Plant)) + 
  geom_point()

Kita juga dapat memberikan warna untuk setiap titik. Misalnya warna masing-masing titik menyesuaikan dengan kategori pada variabel Uptake

ggplot(data = CO2, mapping = aes(x = uptake, y = Plant, color = Plant)) + 
  geom_point()

Line chart

Plot ini digunakan untuk melihat trend data berdasarkan perubahan waktu. Artinya pada Line Chart cocok untuk data-data deret waktu.

Input Data

meng input data dari excel ke r studio

library(readxl)
amazon<- read_xlsx("C:/visualisasi data/data amazon.xlsx")
amazon$Date<- as.Date(amazon$Date)
head(amazon)
## # A tibble: 6 × 8
##   Date         Open   High    Low  Close     Volume Dividends `Stock Splits`
##   <date>      <dbl>  <dbl>  <dbl>  <dbl>      <dbl>     <dbl>          <dbl>
## 1 1997-05-15 0.122  0.125  0.0964 0.0979 1443120000         0              0
## 2 1997-05-16 0.0984 0.0990 0.0854 0.0865  294000000         0              0
## 3 1997-05-19 0.0880 0.0885 0.0812 0.0854  122136000         0              0
## 4 1997-05-20 0.0865 0.0875 0.0818 0.0818  109344000         0              0
## 5 1997-05-21 0.0818 0.0823 0.0688 0.0714  377064000         0              0
## 6 1997-05-22 0.0719 0.0724 0.0656 0.0698  235536000         0              0
str(amazon)
## tibble [6,987 × 8] (S3: tbl_df/tbl/data.frame)
##  $ Date        : Date[1:6987], format: "1997-05-15" "1997-05-16" ...
##  $ Open        : num [1:6987] 0.1219 0.0984 0.088 0.0865 0.0818 ...
##  $ High        : num [1:6987] 0.125 0.099 0.0885 0.0875 0.0823 ...
##  $ Low         : num [1:6987] 0.0964 0.0854 0.0812 0.0818 0.0688 ...
##  $ Close       : num [1:6987] 0.0979 0.0865 0.0854 0.0818 0.0714 ...
##  $ Volume      : num [1:6987] 1.44e+09 2.94e+08 1.22e+08 1.09e+08 3.77e+08 ...
##  $ Dividends   : num [1:6987] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Stock Splits: num [1:6987] 0 0 0 0 0 0 0 0 0 0 ...

Line chart Dasar

ggplot(data = amazon, mapping = aes(x=Date,y=Volume)) +
  geom_line() +
  labs(x="Tanggal", x="volume") 

Area Plot

Untuk menambah estetika dapat dilakukan dengan mengarsir daerah di bawah plot deret waktu. Plot seperti ini disebut Area Plot. Hasilnya sebagai berikut.

ggplot(data = amazon, aes(x=Date,y= Volume)) +
  geom_line(lwd=1.2, col="aquamarine") +
  geom_area(fill="purple4", alpha=0.3)

  labs(x="tanggal", x="volume")
## $x
## [1] "tanggal"
## 
## attr(,"class")
## [1] "labels"

Multiple Line Chart

Pada plot ini dapat digunakan untuk membandingkan trend data deret waktu pada Harga tertinggidan terrendah yang tercatat untuk saham tersebut selama sesi perdagangan.

ggplot(data = amazon, aes(x=Date)) +
  geom_line(aes(y=High), lwd=1, col="blue") +
  geom_line(aes(y=Low), lwd=1, col="red") +
  labs(x="tahun", y ="frekuensi") 

Untuk menambahkan nama kelompok digunakan perintah berikut.

ggplot(data = amazon, aes(x=Date)) +
  geom_line(aes(y=High), lwd=1.2, col="blue") +
  geom_line(aes(y=Low), lwd=1.2, col="red") +
  xlim(min(amazon$Date),max(amazon$Date)+100) +
  geom_text(x=max(amazon$Date),y=tail(amazon$High,1)+30,
            label="High", size = 4,
            color="blue", hjust=8) +
    geom_text(x=max(amazon$Date),y=tail(amazon$Low,1)+30,
            label="Low", size = 4,
            color="red", hjust=7) +
  labs(x="tahun", x="Frekuensi")