Scatter Plot di R menggunakan ggplot2 (dengan Contoh)

Grafik adalah bagian ketiga dari proses analisis data. Bagian pertama adalah tentang ekstraksi data, bagian kedua membahas membersihkan dan memanipulasi data. Pada akhirnya, data scientist mungkin perlu melakukannya mengkomunikasikan hasilnya secara grafis.

Pekerjaan seorang data scientist dapat dilihat pada gambar berikut

  • Tugas pertama seorang data scientist adalah mendefinisikan pertanyaan penelitian. Pertanyaan penelitian ini tergantung pada maksud dan tujuan proyek.
  • Setelah itu, salah satu tugas yang paling menonjol adalah rekayasa fitur. Ilmuwan data perlu mengumpulkan, memanipulasi, dan membersihkan data
  • Ketika langkah ini selesai, dia bisa mulai menjelajahi kumpulan data. Terkadang, hipotesis awal perlu disempurnakan dan diubah karena adanya penemuan baru.

Plot Sebar di R

  • Ketika jelas analisis tercapai, ilmuwan data harus mempertimbangkan kapasitas pembaca untuk melakukannya memahami konsep dan model yang mendasarinya.
  • Hasilnya harus disajikan dalam format yang dapat dipahami oleh semua pemangku kepentingan. Salah satu metode terbaik untuk melakukannya menyampaikan hasilnya melalui a grafik.
  • Grafik merupakan alat yang luar biasa untuk menyederhanakan analisis yang rumit.

paket ggplot2

Bagian tutorial ini berfokus pada cara membuat grafik/bagan dengan R.

Dalam tutorial ini, Anda akan menggunakan paket ggplot2. Paket ini dibangun berdasarkan landasan yang konsisten dari buku Tata Bahasa Grafik yang ditulis oleh Wilkinson, 2005. ggplot2 sangat fleksibel, menggabungkan banyak tema dan spesifikasi plot pada abstraksi tingkat tinggi. Dengan ggplot2, Anda tidak dapat membuat plot grafik 3 dimensi dan membuat grafik interaktif.

Dalam ggplot2, grafik tersusun dari argumen berikut:

  • data
  • pemetaan estetika
  • objek geometris
  • transformasi statistik
  • sisik
  • sistem koordinasi
  • penyesuaian posisi
  • faceting

Anda akan mempelajari cara mengontrol argumen tersebut di tutorial.

Sintaks dasar ggplot2 adalah:

ggplot(data, mapping=aes()) +
geometric object 

arguments: 
data: Dataset used to plot the graph
mapping: Control the x and y-axis 
geometric object: The type of plot you want to show. The most common object are:
 
- Point: `geom_point()` 
- Bar: `geom_bar()`
- Line: `geom_line()` 
- Histogram: `geom_histogram()`

petak sebar

Mari kita lihat cara kerja ggplot dengan kumpulan data mtcars. Anda mulai dengan membuat plot sebar dari variabel mpg dan variabel drat.

Plot pencar dasar

library(ggplot2)
ggplot(mtcars, aes(x = drat, y = mpg)) +
    geom_point()

Penjelasan Kode

  • Pertama-tama Anda meneruskan kumpulan data mtcars ke ggplot.
  • Di dalam argumen aes(), Anda menambahkan sumbu x dan sumbu y.
  • Tanda + berarti Anda ingin R terus membaca kode tersebut. Tanda ini membuat kode lebih mudah dibaca dengan memecahnya.
  • Gunakan geom_point() untuk objek geometris.

Keluaran:

Plot Sebaran Dasar

Sebarkan plot dengan kelompok

Terkadang, menarik untuk membedakan nilai berdasarkan sekelompok data (yaitu data tingkat faktor).

ggplot(mtcars, aes(x = mpg, y = drat)) +
    geom_point(aes(color = factor(gear)))

Penjelasan Kode

  • Aes() di dalam geom_point() mengontrol warna grup. Kelompok harus menjadi variabel faktor. Dengan demikian, Anda mengubah gigi variabel menjadi faktor.
  • Secara keseluruhan, Anda memiliki kode aes(color = factor(gear)) yang mengubah warna titik.

Keluaran:

Sebarkan Plot dengan Grup

Ubah sumbu

Menskalakan ulang data adalah bagian besar dari pekerjaan data scientist. Terkadang, data hadir dalam bentuk lonceng yang bagus. Salah satu solusi untuk membuat data Anda kurang sensitif terhadap outlier adalah dengan mengubah skalanya.

ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
    geom_point(aes(color = factor(gear)))

Penjelasan Kode

  • Anda mengubah variabel x dan y di log() langsung di dalam pemetaan aes().

Perhatikan bahwa transformasi lain apa pun dapat diterapkan seperti standardisasi atau normalisasi.

Keluaran:

Ubah Sumbu

Plot sebar dengan nilai yang sesuai

Anda dapat menambahkan tingkat informasi lain ke grafik. Anda dapat memplot nilai regresi linier yang sesuai.

my_graph <- ggplot(mtcars, aes(x = log(mpg), y = log(drat))) +
    geom_point(aes(color = factor(gear))) +
    stat_smooth(method = "lm",
        col = "#C42126",
        se = FALSE,
        size = 1)
my_graph

Penjelasan Kode

  • grafik: Anda menyimpan grafik Anda ke dalam variabel grafik. Ini berguna untuk penggunaan lebih lanjut atau menghindari baris kode yang terlalu rumit
  • Argumen stat_smooth() mengontrol metode penghalusan
  • metode = “lm”: Regresi linier
  • col = “#C42126” : Kode warna merah pada garis
  • se = FALSE: Tidak menampilkan kesalahan standar
  • size = 1: ukuran garis adalah 1

Keluaran:

Plot Sebar dengan Nilai yang Dipasang

Perhatikan bahwa metode penghalusan lain juga tersedia

  • glm
  • gam
  • loess: nilai default
  • pelek

Tambahkan informasi ke grafik

Sejauh ini, kami belum menambahkan informasi dalam grafik. Grafik harus informatif. Pembaca harus melihat cerita di balik analisis data hanya dengan melihat grafik tanpa merujuk dokumentasi tambahan. Oleh karena itu, grafik memerlukan label yang baik. Anda dapat menambahkan label dengan fungsi labs().

Sintaks dasar untuk lab() adalah:

lab(title = "Hello Guru99")
argument:
- title: Control the title. It is possible to change or add title with:			
- subtitle: Add subtitle below title			
- caption: Add caption below the graph			
- x: rename x-axis			
- y: rename y-axis			
Example:lab(title = "Hello Guru99", subtitle = "My first plot")	

Tambahkan judul

Salah satu informasi wajib untuk ditambahkan jelas merupakan judul.

my_graph +
    labs(
        title = "Plot Mile per hours and drat, in log"
         )

Penjelasan Kode

  • my_graph: Anda menggunakan grafik yang Anda simpan. Ini menghindari penulisan ulang semua kode setiap kali Anda menambahkan informasi baru ke grafik.
  • Anda membungkus judul di dalam lab().
  • Kode warna merah pada garis
  • se = FALSE: Tidak menampilkan kesalahan standar
  • size = 1: ukuran garis adalah 1

Keluaran:

Tambahkan Judul

Tambahkan judul dengan nama dinamis

Judul dinamis berguna untuk menambahkan informasi yang lebih tepat pada judul.

Anda dapat menggunakan fungsi paste() untuk mencetak teks statis dan teks dinamis. Sintaks dasar paste() adalah:

paste("This is a text", A)
arguments
- " ": Text inside the quotation marks are the static text
- A: Display the variable stored in A
- Note you can add as much static text and variable as you want. You need to separate them with a comma	

Contoh:

A <-2010
paste("The first year is", A)

Keluaran:

## [1] "The first year is 2010"
B <-2018

paste("The first year is", A, "and the last year is", B)

Keluaran:

## [1] "The first year is 2010 and the last year is 2018"

Anda dapat menambahkan nama dinamis ke grafik kami, yaitu rata-rata mpg.

mean_mpg <- mean(mtcars$mpg)
my_graph + labs(
    title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg)
)

Penjelasan Kode

  • Anda membuat rata-rata mpg dengan mean(mtcars$mpg) yang disimpan dalam variabel mean_mpg
  • Anda menggunakan paste() dengan mean_mpg untuk membuat judul dinamis yang mengembalikan nilai rata-rata mpg

Keluaran:

Tambahkan Judul dengan Nama Dinamis

Tambahkan subtitle

Dua detail tambahan dapat membuat grafik Anda lebih eksplisit. Anda berbicara tentang subtitle dan keterangan. Subjudulnya berada tepat di bawah judul. Judulnya dapat menginformasikan siapa yang melakukan penghitungan dan sumber datanya.

my_graph +
    labs(
        title =
        "Relation between Mile per hours and drat",
        subtitle =
        "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Penjelasan Kode

  • Di dalam lab(), Anda menambahkan:
    • title = “Hubungan antara Mile per jam dan drat”: Tambahkan judul
    • subtitle = “Hubungan dipecah berdasarkan kelas perlengkapan”: Tambahkan subtitle
    • caption = “Perhitungan penulis sendiri: Tambahkan keterangan
    • Anda memisahkan setiap informasi baru dengan koma, ,
  • Perhatikan bahwa Anda merusak baris kode. Ini tidak wajib, dan hanya membantu membaca kode dengan lebih mudah

Keluaran:

Tambahkan Subjudul

Ganti nama sumbu x dan sumbu y

Variabel itu sendiri dalam kumpulan data mungkin tidak selalu eksplisit atau menurut konvensi menggunakan _ ketika ada beberapa kata (misalnya GDP_CAP). Anda tidak ingin nama tersebut muncul dalam grafik Anda. Penting untuk mengubah nama atau menambahkan lebih banyak detail, seperti unit.

my_graph +
    labs(
        x = "Drat definition",
        y = "Mile per hours",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Penjelasan Kode

  • Di dalam lab(), Anda menambahkan:
    • x = “Definisi Drat”: Mengubah nama sumbu x
    • y = “Mil per jam”: Ubah nama sumbu y

Keluaran:

Ganti nama sumbu x dan sumbu y

Kendalikan timbangannya

Anda dapat mengontrol skala sumbu.

Fungsi seq() berguna saat Anda perlu membuat urutan angka. Sintaks dasarnya adalah:

seq(begin, last, by = x)
arguments:
- begin: First number of the sequence
- last: Last number of the sequence
- by= x: The step. For instance, if x is 2, the code adds 2 to `begin-1` until it reaches `last`	

Misalnya, jika Anda ingin membuat rentang dari 0 hingga 12 dengan langkah 3, Anda akan memiliki empat angka, 0 4 8 12

seq(0, 12,4)

Keluaran:

## [1]  0  4  8 12

Anda dapat mengontrol skala sumbu x dan sumbu y seperti di bawah ini

my_graph +
    scale_x_continuous(breaks = seq(1, 3.6, by = 0.2)) +
    scale_y_continuous(breaks = seq(1, 1.6, by = 0.1)) +
    labs(
        x = "Drat definition",
        y = "Mile per hours",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Penjelasan Kode

  • Fungsi scale_y_continuous() mengontrol sumbu y
  • Fungsi scale_x_continuous() mengontrol sumbu x.
  • Parameter break mengontrol pemisahan sumbu. Anda dapat menambahkan urutan nomor secara manual atau menggunakan fungsi seq():
    • seq(1, 3.6, by = 0.2): Buat enam angka dari 2.4 hingga 3.4 dengan langkah 3
    • seq(1, 1.6, by = 0.1): Buat tujuh angka dari 1 hingga 1.6 dengan langkah 1

Keluaran:

Kendalikan timbangannya

Tema

Terakhir, R memungkinkan kita menyesuaikan plot dengan tema berbeda. Perpustakaan ggplot2 mencakup delapan tema:

  • tema_bw()
  • tema_cahaya()
  • tema_kelas()
  • tema_linedraw()
  • tema_gelap()
  • tema_minimal()
  • tema_abu-abu()
  • tema_void()
my_graph +
    theme_dark() +
    labs(
        x = "Drat definition, in log",
        y = "Mile per hours, in log",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Keluaran:

Tema

Simpan Plot

Setelah semua langkah ini, sekarang saatnya menyimpan dan membagikan grafik Anda. Anda menambahkan ggsave('NAME OF THE FILE) tepat setelah Anda memplot grafik dan itu akan disimpan di hard drive.

Grafik disimpan di direktori kerja. Untuk memeriksa direktori kerja, Anda dapat menjalankan kode ini:

directory <-getwd()
directory

Mari buat grafik fantastis Anda, simpan dan periksa lokasinya

my_graph +
    theme_dark() +
    labs(
        x = "Drat definition, in log",
        y = "Mile per hours, in log",
        color = "Gear",
        title = "Relation between Mile per hours and drat",
        subtitle = "Relationship break down by gear class",
        caption = "Authors own computation"
    )

Keluaran:

Simpan Plot

ggsave("my_fantastic_plot.png")

Keluaran:

## Saving 5 x 4 in image

Note: Untuk tujuan pedagogi saja, kami membuat fungsi bernama open_folder() untuk membuka folder direktori untuk Anda. Anda hanya perlu menjalankan kode di bawah ini dan melihat di mana gambar tersebut disimpan. Anda akan melihat nama file my_fantastic_plot.png.

# Run this code to create the
function
open_folder <- function(dir) {
    if (.Platform['OS.type'] == "windows") {
        shell.exec(dir)
    } else {
        system(paste(Sys.getenv("R_BROWSER"), dir))
    }
}

# Call the
function to open the folder open_folder(directory)

Ringkasan

Anda dapat meringkas argumen untuk membuat plot sebar pada tabel di bawah ini:

Tujuan Kode
Plot pencar dasar
ggplot(df, aes(x = x1, y = y)) + geom_point()
Sebarkan plot dengan kelompok warna
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm")
Tambahkan nilai yang sesuai
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1))
Tambahkan judul
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99"))
Tambahkan subtitle
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99"))
Ganti nama x
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1")
Ganti nama kamu
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1")
Kontrol skalanya
ggplot(df, aes(x = x1, y = y)) + geom_point() + scale_y_continuous(breaks = seq(10, 35, by = 10)) + scale_x_continuous(breaks = seq(2, 5, by = 1)
Buat log
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point()
Tema
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic()
Simpan
ggsave("my_fantastic_plot.png")