Как создать диаграмму-леденец в r
Подобно гистограмме, леденец полезен для сравнения количественных значений категориальной переменной. Вместо столбцов в диаграмме-леденце используются линии с кружками на конце для представления количественных значений.
Диаграмма-леденец — отличный способ сравнить несколько категорий, сводя к минимуму количество цвета на диаграмме и концентрируя внимание читателя на фактических значениях на диаграмме, а не на линиях или других графиках на диаграмме. Многие люди также считают доску для леденцов эстетичной.
В этом уроке мы рассмотрим шаги, необходимые для создания следующей леденец-диаграммы:
Пример: диаграмма леденца в 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 для каждого автомобиля должно быть равно среднему значению миль на галлон .
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))