Sebarkan Plot di R menggunakan ggplot2 (dengan Contoh)

Isi kandungan:

Anonim

Grafik adalah bahagian ketiga dari proses analisis data. Bahagian pertama adalah mengenai pengekstrakan data , bahagian kedua berkaitan dengan pembersihan dan manipulasi data . Akhirnya, saintis data mungkin perlu menyampaikan hasilnya secara grafik .

Tugas saintis data dapat dikaji dalam gambar berikut

  • Tugas pertama seorang saintis data adalah untuk menentukan persoalan kajian. Persoalan kajian ini bergantung pada objektif dan matlamat projek.
  • Selepas itu, salah satu tugas yang paling menonjol adalah kejuruteraan ciri. Saintis data perlu mengumpulkan, memanipulasi dan membersihkan data
  • Apabila langkah ini selesai, dia dapat mula meneroka set data. Kadang kala, perlu untuk memperbaiki dan mengubah hipotesis asal kerana penemuan baru.

  • Apabila analisis penjelasan dicapai, saintis data harus mempertimbangkan keupayaan pembaca untuk memahami konsep dan model yang mendasari .
  • Hasilnya harus disampaikan dalam format yang dapat difahami oleh semua pihak yang berkepentingan. Salah satu kaedah terbaik untuk menyampaikan hasilnya adalah melalui grafik .
  • Grafik adalah alat yang luar biasa untuk mempermudah analisis yang kompleks.

Dalam tutorial ini, anda akan belajar-

  • pakej ggplot2
  • Plot bersepah
  • Tukar paksi
  • Petak penyebaran dengan nilai yang sesuai
  • Tambahkan maklumat pada grafik
  • Namakan semula paksi-x dan paksi-y
  • Kawal timbangan
  • Tema
  • Simpan Petak

pakej ggplot2

Bahagian tutorial ini memfokuskan cara membuat grafik / carta dengan R.

Dalam tutorial ini, anda akan menggunakan pakej ggplot2. Pakej ini dibina berdasarkan asas yang gramatis dari buku Grammar of graphic yang ditulis oleh Wilkinson, 2005. ggplot2 sangat fleksibel, menggabungkan banyak tema dan spesifikasi plot pada tahap abstraksi yang tinggi. Dengan ggplot2, anda tidak dapat merancang grafik 3 dimensi dan membuat grafik interaktif.

Dalam ggplot2, grafik terdiri daripada argumen berikut:

  • data
  • pemetaan estetik
  • objek geometri
  • transformasi statistik
  • timbangan
  • sistem koordinat
  • penyesuaian kedudukan
  • segi

Anda akan belajar bagaimana mengawal hujah-hujah tersebut dalam tutorial.

Sintaks asas ggplot2 adalah:

ggplot(data, mapping=aes()) +geometric objectarguments:data: Dataset used to plot the graphmapping: Control the x and y-axisgeometric 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()`

Plot bersepah

Mari lihat bagaimana ggplot berfungsi dengan set data mtcars. Anda mulakan dengan membuat plot penyebaran pemboleh ubah mpg dan pemboleh ubah drat.

Plot penyebaran asas

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

Penjelasan Kod

  • Anda terlebih dahulu menyampaikan mtcars dataset ke ggplot.
  • Di dalam argumen aes (), anda menambah paksi-x dan paksi-y.
  • Tanda + bermaksud anda mahu R terus membaca kodnya. Ini menjadikan kod lebih mudah dibaca dengan memecahkannya.
  • Gunakan geom_point () untuk objek geometri.

Pengeluaran:

Plot berselerak dengan kumpulan

Kadang kala, adalah menarik untuk membezakan nilai mengikut sekumpulan data (iaitu data tahap faktor).

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

Penjelasan Kod

  • The aes () di dalam titik geom () mengawal warna kumpulan. Kumpulan harus menjadi pemboleh ubah faktor. Oleh itu, anda menukar gear berubah dalam satu faktor.
  • Secara keseluruhan, anda mempunyai kod aes (color = factor (gear)) yang mengubah warna titik.

Pengeluaran:

Tukar paksi

Menjual semula data adalah sebahagian besar tugas saintis data. Kadang-kadang data datang dalam bentuk loceng yang bagus. Salah satu penyelesaian untuk menjadikan data anda kurang sensitif terhadap outlier adalah dengan menyimpannya semula.

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

Penjelasan Kod

  • Anda mengubah pemboleh ubah x dan y dalam log () secara langsung di dalam pemetaan aes ().

Perhatikan bahawa transformasi lain dapat diterapkan seperti standardisasi atau normalisasi.

Pengeluaran:

Petak penyebaran dengan nilai yang sesuai

Anda boleh menambahkan tahap maklumat lain ke grafik. Anda boleh merancang 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 Kod

  • grafik: Anda menyimpan graf anda ke dalam grafik pemboleh ubah. Ia berguna untuk penggunaan lebih lanjut atau mengelakkan baris kod yang terlalu rumit
  • Argumen stat_smooth () mengawal kaedah melicinkan
  • kaedah = "lm": Regresi linear
  • col = "# C42126": Kod untuk warna merah garis
  • se = SALAH: Jangan memaparkan ralat standard
  • size = 1: ukuran garis adalah 1

Pengeluaran:

Perhatikan bahawa kaedah melicinkan lain ada

  • glm
  • gam
  • loess: nilai lalai
  • rim

Tambahkan maklumat pada grafik

Setakat ini, kami belum menambahkan maklumat dalam grafik. Grafik mestilah bermaklumat. Pembaca harus melihat kisah di sebalik analisis data hanya dengan melihat grafik tanpa merujuk dokumentasi tambahan. Oleh itu, grafik memerlukan label yang baik. Anda boleh menambahkan label dengan fungsi lab ().

Sintaks asas untuk makmal () 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-axisExample:lab(title = "Hello Guru99", subtitle = "My first plot")

Tambahkan tajuk

Satu maklumat wajib untuk ditambahkan jelas merupakan tajuk.

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

Penjelasan Kod

  • my_graph: Anda menggunakan grafik yang anda simpan. Ini mengelakkan menulis semula semua kod setiap kali anda menambah maklumat baru pada grafik.
  • Anda membungkus tajuk di dalam makmal ().
  • Kod untuk warna merah garis
  • se = SALAH: Jangan memaparkan ralat standard
  • size = 1: ukuran garis adalah 1

Pengeluaran:

Tambahkan tajuk dengan nama dinamik

Tajuk dinamik berguna untuk menambahkan maklumat yang lebih tepat dalam tajuk.

Anda boleh menggunakan fungsi tampal () untuk mencetak teks statik dan teks dinamik. Sintaks asas pes () 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 <-2010paste("The first year is", A)

Pengeluaran:

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

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

Pengeluaran:

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

Anda boleh menambahkan nama dinamik ke grafik kami, iaitu 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 Kod

  • Anda membuat purata mpg dengan min (mtcars $ mpg) yang disimpan dalam pemboleh ubah mean_mpg
  • Anda menggunakan tampal () dengan mean_mpg untuk membuat tajuk dinamik yang mengembalikan nilai min mpg

Pengeluaran:

Tambahkan sari kata

Dua perincian tambahan dapat menjadikan grafik anda lebih jelas. Anda bercakap mengenai sari kata dan kapsyen. Sari kata tepat di bawah tajuk. Kapsyen dapat memberitahu mengenai siapa yang melakukan pengiraan dan sumber data.

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

Penjelasan Kod

  • Di dalam makmal (), anda menambahkan:
    • title = "Perkaitan antara Batu per jam dan drat": Tambah tajuk
    • subtitle = "Hubungan dipecahkan mengikut kelas gear": Tambahkan sari kata
    • caption = "Pengarang sendiri pengiraan: Tambahkan kapsyen
    • Anda memisahkan setiap maklumat baru dengan koma,,
  • Perhatikan bahawa anda melanggar garis kod. Ia tidak wajib, dan hanya membantu membaca kod dengan lebih mudah

Pengeluaran:

Namakan semula paksi-x dan paksi-y

Pemboleh ubah itu sendiri dalam set data mungkin tidak selalu eksplisit atau secara konvensional menggunakan _ apabila terdapat banyak perkataan (iaitu GDP_CAP). Anda tidak mahu nama seperti itu muncul dalam grafik anda. Penting untuk menukar nama atau menambahkan lebih banyak butiran, 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 Kod

  • Di dalam makmal (), anda menambahkan:
    • x = "Definisi Drat": Tukar nama paksi-x
    • y = "Batu setiap jam": Tukar nama paksi-y

Pengeluaran:

Kawal timbangan

Anda boleh mengawal skala paksi.

Fungsi seq () sesuai apabila anda perlu membuat urutan nombor. Sintaks asasnya 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`

Contohnya, jika anda ingin membuat julat dari 0 hingga 12 dengan langkah 3, anda akan mempunyai empat nombor, 0 4 8 12

seq(0, 12,4)

Pengeluaran:

## [1] 0 4 8 12 

Anda boleh mengawal skala paksi-x dan paksi-y seperti di bawah

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 Kod

  • Skala fungsi_y_continuous () mengawal paksi-y
  • Skala fungsi_x_continuous () mengawal paksi-x .
  • Pecahan parameter mengawal pemecahan paksi. Anda boleh menambahkan urutan nombor secara manual atau menggunakan fungsi seq ():
    • seq (1, 3.6, by = 0.2): Buat enam nombor dari 2.4 hingga 3.4 dengan langkah 3
    • seq (1, 1.6, by = 0.1): Buat tujuh nombor dari 1 hingga 1.6 dengan langkah 1

Pengeluaran:

Tema

Akhirnya, R membolehkan kita menyesuaikan plot dengan tema yang berbeza. Perpustakaan ggplot2 merangkumi lapan tema:

  • tema_bw ()
  • tema_cahaya ()
  • tema_kelas ()
  • tema_bercakap ()
  • tema_dark ()
  • tema_minimal ()
  • tema_gray ()
  • 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")

Pengeluaran:

Simpan Petak

Selepas semua langkah ini, inilah masanya untuk menyimpan dan berkongsi grafik anda. Anda menambahkan ggsave ('NAME OF FILE) tepat setelah anda memplot grafik dan ia akan disimpan di cakera keras.

Grafik disimpan di direktori yang berfungsi. Untuk memeriksa direktori yang berfungsi, anda boleh menjalankan kod ini:

directory <-getwd()directory 

Mari plot grafik hebat 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")

Pengeluaran:

ggsave("my_fantastic_plot.png.webp")

Pengeluaran:

## Saving 5 x 4 in image

Catatan : Untuk tujuan pedagogi sahaja, kami membuat fungsi yang disebut open_folder () untuk membuka folder direktori untuk anda. Anda hanya perlu menjalankan kod di bawah dan melihat di mana gambar itu disimpan. Anda mesti melihat nama fail my_fantastic_plot.png.webp.

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

Ringkasan

Anda boleh meringkaskan argumen untuk membuat plot penyebaran dalam jadual di bawah:

Objektif

Kod

Plot penyebaran asas

ggplot(df, aes(x = x1, y = y)) + geom_point()

Plot berselerak dengan kumpulan 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))

Tambah tajuk

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99"))

Tambah sari kata

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99"))

Namakan semula x

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1")

Namakan semula y

ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1")

Kawal skala

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()

Jimat

ggsave("my_fantastic_plot.png.webp")