Cara membuat bagan lollipop di r


Mirip dengan diagram batang, diagram lolipop berguna untuk membandingkan nilai kuantitatif suatu variabel kategori. Daripada menggunakan batangan, diagram lolipop menggunakan garis dengan lingkaran di ujungnya untuk mewakili nilai kuantitatif.

Bagan lolipop adalah cara terbaik untuk membandingkan beberapa kategori sekaligus meminimalkan jumlah warna pada bagan dan memfokuskan perhatian pembaca pada nilai sebenarnya pada bagan dibandingkan dengan garis atau grafik lain pada bagan. Banyak orang juga menganggap papan lollipop menyenangkan secara estetika.

Dalam tutorial ini, kita akan melalui langkah-langkah yang diperlukan untuk membuat grafik lolipop berikut:

Contoh: Bagan Lollipop di R

Untuk contoh ini, kita akan menggunakan dataset R bawaan mtcars :

 #view first six rows of mtcars
head(mtcars)

Bagan lolipop dasar

Kode berikut menggambarkan caranya   untuk membuat bagan lollipop untuk membandingkan mpg (mil per galon) dari masing-masing 32 mobil dalam kumpulan data.

Nama mobil ditentukan dalam nama baris kumpulan data, jadi pertama-tama kita membuat kolom baru di kumpulan data yang berisi nama baris tersebut.

Selanjutnya, kita memuat perpustakaan ggplot2 , yang akan kita gunakan untuk membuat grafik lollipop.

Dengan ggplot2, kita menggunakan geom_segment untuk membuat garis pada plot. Kami menetapkan nilai x awal dan akhir masing-masing sebagai 0 dan mpg . Kami menetapkan nilai awal dan akhir y sebagai char :

 #create new column for car names
mtcars$car <- row.names(mtcars)

#load ggplot2 library
library(ggplot2)

#create lollipop chart
ggplot(mtcars, aes(x = mpg, y = car)) +
        geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
        geom_point()

Menambahkan label

Kita juga dapat menambahkan label ke bagan menggunakan argumen label dan geom_text :

 ggplot(mtcars, aes(x = mpg, y = car, label = mpg )) +
        geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
        geom_point() +
        geom_text(nudge_x = 1.5)

Atau daripada menempatkan label di akhir setiap baris, kita dapat menempatkannya di dalam lingkaran dengan memperbesar lingkaran dan mengubah warna font label menjadi putih:

 ggplot(mtcars, aes(x = mpg, y = car, label = mpg)) +
        geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
        geom_point( size = 7 ) +
        geom_text( color = 'white', size = 2 )

Bandingkan nilai dengan rata-rata

Kita juga dapat menggunakan grafik lolipop untuk membandingkan nilai dengan angka tertentu. Misalnya, kita dapat menemukan nilai rata-rata mpg dalam kumpulan data, lalu membandingkan nilai mpg setiap mobil dengan rata-ratanya.

Kode berikut menggunakan perpustakaan dplyr untuk menemukan nilai rata-rata mpg dan kemudian mengatur mobil dalam urutan mpg :

 #load library dplyr
library(dplyr)

#find mean value of mpg and arrange cars in order by mpg descending
mtcars_new <- mtcars %>%
                arrange(mpg) %>%
                mutate(mean_mpg = mean(mpg),
                       flag = ifelse(mpg - mean_mpg > 0, TRUE, FALSE),
                       car = factor(car, levels = .$car))

#view first six rows of mtcars_new
head(mtcars_new)

Kemudian kode berikut membuat grafik lollipop dengan mengatur warna lingkaran sama dengan nilai bendera (dalam hal ini TRUE atau FALSE) dan nilai x awal untuk setiap mobil sama dengan nilai rata-rata mpg .

 ggplot(mtcars_new, aes(x = mpg, y = car, color = flag )) +
        geom_segment(aes( x = mean_mpg , y = car, xend = mpg, yend = car)) +
        geom_point()

Dengan menggunakan palet warna jenis ini, kita dapat dengan mudah menentukan mobil mana yang memiliki mpg lebih rendah dan lebih tinggi daripada rata-rata kumpulan data.

Secara default, R menggunakan warna biru dan merah sebagai warna grafiknya. Namun, kita bisa menggunakan warna apa pun yang kita inginkan menggunakan argumen scale_color_manual :

 ggplot(mtcars_new, aes(x = mpg, y = car, color = flag)) +
        geom_segment(aes(x = mean_mpg, y = car, xend = mpg, yend = car)) +
        geom_point() +
        scale_color_manual(values = c("purple", "blue"))

Ubah estetika bagan

Terakhir, kita dapat menggunakan kemampuan luas ggplot2 untuk memodifikasi lebih lanjut estetika bagan dan membuat produk akhir yang terlihat profesional:

 ggplot(mtcars_new, aes(x = mpg, y = car, color = flag)) +
        geom_segment(aes(x = mean_mpg, y = car, xend = mpg, yend = car), color = "grey") +
        geom_point() +
        annotate("text", x = 27, y = 20, label = "Above Average", color = "#00BFC4", size = 3, hjust = -0.1, vjust = .75) +
        annotate("text", x = 27, y = 17, label = "Below Average", color = "#F8766D", size = 3, hjust = -0.1, vjust = -.1) +
        geom_segment(aes(x = 26.5, xend = 26.5, y = 19, yend = 23),
                     arrow = arrow(length = unit(0.2,"cm")), color = "#00BFC4") +
        geom_segment(aes(x = 26.5, xend = 26.5, y = 18, yend = 14),
                     arrow = arrow(length = unit(0.2,"cm")), color = "#F8766D") +
        labs(title = "Miles per Gallon by Car") +
        theme_minimal() +
        theme(axis.title = element_blank(),
              panel.grid.minor = element_blank(),
              legend.position = "none",
              text = element_text(family = "Georgia"),
              axis.text.y = element_text(size = 8),
              plot.title = element_text(size = 20, margin = margin(b = 10), hjust = 0),
              plot.subtitle = element_text(size = 12, color = "darkslategrey", margin = margin(b = 25, l = -25)),
              plot.caption = element_text(size = 8, margin = margin(t = 10), color = "grey70", hjust = 0))

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *