Как создать леденцовую диаграмму в R


Подобно гистограмме, диаграмма леденцов полезна для сравнения количественных значений категориальной переменной. Однако вместо столбцов диаграмма леденцов использует линии с кружками на концах для представления количественных значений.

Диаграмма-леденец — отличный способ сравнить несколько категорий, сохраняя при этом минимальное количество цвета на диаграмме и привлекая внимание читателя к фактическим значениям на диаграмме, а не к линиям или другой графике на диаграмме. Многие люди также считают леденцовую диаграмму эстетически приятной.

В этом уроке мы рассмотрим необходимые шаги для создания следующей леденцовой диаграммы:

Диаграмма леденцов с использованием ggplot2 в R

Пример: Lollipop Chart в R

В этом примере мы будем использовать встроенный набор данных R mtcars :

#view first six rows of *mtcars*head(mtcars)

набор данных mtcars в R

Базовая диаграмма леденцов

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

Имена автомобилей определены в именах строк набора данных, поэтому сначала мы создаем в наборе данных новый столбец, содержащий эти имена строк.

Затем мы загружаем библиотеку ggplot2 , которую будем использовать для фактического создания леденцовой диаграммы.

С ggplot2 мы используем geom_segment для создания линий на графике. Мы определяем начальное и конечное значения x как 0 и mpg соответственно. Мы определяем начальное и конечное значения y как car :

#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() 
Диаграмма леденцов в R с использованием ggplot2

Добавление ярлыков

Мы также можем добавить метки к диаграмме, используя аргументы 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) 
Диаграмма леденцов с метками в R

Или вместо того, чтобы размещать метки в конце каждой строки, мы могли бы разместить их внутри самих кругов, увеличив круги и изменив цвет шрифта метки на белый:

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 ) 
Диаграмма леденцов с метками внутри кругов в R

Сравнение значений со средним

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

Следующий код использует библиотеку 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)
Использование dplyr для организации набора данных mtcars в R

Затем следующий код создает леденцовую диаграмму, определяя цвет круга равным значению флага (в данном случае ИСТИНА или ЛОЖЬ), а начальное значение x для каждого автомобиля равно среднему значению миль на галлон..

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 с использованием ggplot2

Используя этот тип цветовой схемы, мы можем легко определить, какие автомобили имеют расход на галлон меньше и больше среднего для набора данных.

По умолчанию 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_colour_manual(values = c("purple", "blue")) 
Диаграмма Lollipop с пользовательскими цветами в R

Изменение эстетики диаграммы

Наконец, мы можем использовать широкие возможности 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)) 
Диаграмма леденцов с использованием ggplot2 в R
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.