Як створити діаграму lollipop у r


Подібно до гістограми, льодяникова діаграма корисна для порівняння кількісних значень категоріальної змінної. Замість використання стовпчиків у діаграмі-льодянику для представлення кількісних значень використовуються лінії з колами на кінці.

Льодяникова діаграма — це чудовий спосіб порівняти кілька категорій, зводячи до мінімуму кількість кольорів на діаграмі та зосереджуючи увагу читача на фактичних значеннях на діаграмі, а не на лініях чи інших графічних елементах на діаграмі. Багато людей також вважають дошку для льодяників естетично привабливою.

У цьому посібнику ми розглянемо кроки, необхідні для створення такої діаграми-льодяника:

Приклад: діаграма Lollipop мовою R

Для цього прикладу ми використаємо вбудований набір даних R mtcars :

 #view first six rows of mtcars
head(mtcars)

Основна діаграма льодяника

Наступний код ілюструє, як це зробити   щоб створити льодяникову діаграму для порівняння миль на галон (миль на галон) кожного з 32 автомобілів у наборі даних.

Назви автомобілів визначені в назвах рядків набору даних, тому ми спочатку створюємо новий стовпець у наборі даних, який містить ці назви рядків.

Далі ми завантажуємо бібліотеку ggplot2 , яку будемо використовувати для створення діаграми-льодяника.

З ggplot2 ми використовуємо geom_segment для створення ліній на графіку. Ми встановлюємо початкові та кінцеві значення x як 0 і mpg відповідно. Ми встановлюємо початкові та кінцеві значення y як 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()

Додавання міток

Ми також можемо додати мітки до діаграми за допомогою аргументів label і 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)

Або замість того, щоб розміщувати мітки в кінці кожного рядка, ми могли б розмістити їх усередині самих кіл, зробивши кола більшими та змінивши колір шрифту мітки на білий:

 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 )

Порівняйте значення із середнім

Ми також можемо використовувати льодяникову діаграму, щоб порівняти значення з певним числом. Наприклад, ми можемо знайти середнє значення миль на галон у наборі даних, а потім порівняти кожен автомобіль із середнім.

Наступний код використовує бібліотеку dplyr , щоб знайти середнє значення миль на галон , а потім упорядкувати автомобілі в порядку зростання миль на галон :

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

Потім наступний код створює льодяникову діаграму, встановлюючи колір кола рівним значенню прапора (у цьому випадку TRUE або FALSE), а початкове значення x для кожного автомобіля дорівнює середньому значенню 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()

Використовуючи цей тип колірної палітри, ми можемо легко визначити, які автомобілі мають менше та більше миль на галон , ніж середнє набір даних.

За замовчуванням R використовує синій і червоний як кольори діаграми. Однак ми можемо використовувати будь-які кольори, які забажаємо, використовуючи аргумент 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"))

Змінити естетику діаграми

Нарешті, ми можемо використати широкі можливості ggplot2 для подальшої модифікації естетики діаграми та створення кінцевого продукту професійного вигляду:

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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *