Как стать автором
Обновить

План-факт, динамика и прибыль на одной диаграмме c помощью R

Время на прочтение2 мин
Количество просмотров9.5K
Каждый раз, когда подводятся финансовые итоги прошедшего года и готовится соответствующая презентация, люди ломают голову, как бы уместить основные цифры на одной диаграмме. Какова бы ни была сфера деятельности организации, подведение итогов, как правило, начинается с анализа основных финансовых показателей, отдельно по каждому из бизнес-направлений:
  • оборот в завершившемся году (фактические цифры);
  • установленные ранее планы на завершившийся год (для анализа выполнения);
  • оборот годом ранее (для понимания динамики);
  • прибыльность.
Стандартная столбчатая диаграмма, которую можно на скорую руку построить в Excel, даёт, мягко говоря, не совсем наглядный результат. К примеру, если у бизнеса четыре направления, то на диаграмме появятся 16 рядом стоящих столбцов, и кто-то может с непривычки спутать передовиков и отстающих.
Специалисты, знакомые с R, могут использовать ggplot2 для программного построения нужной диаграммы, например, такой как здесь. Для примера взяты цифры за 2012 год из годового отчета компании Unilever. Плановые показатели не относятся к публичным данным, поэтому пришлось их выдумать из головы, установив, для определенности, на уровне «прошлый год + 5%».
Исходные цифры находятся в Excel и выглядят так (данные в миллионах евро):
image
Построенная в RStudio диаграмма выглядит следующим образом:
image
Проверьте диаграмму на интуитивность, и не глядя на цифры, предположите, какому показателю какой элемент диаграммы соответствует, а объяснения будут далее.

Идея в том, чтобы основной параметр — оборот (Turnover) — показывался в виде залитых цветом столбцов, показатель прошлого года (LastYear) — как контур, находящийся визуально позади, плановые показатели (Forecast) в виде «планок», а прибыльность (точнее, противоположная величина — расходы) — небольшой отметкой.
Для чтения данных из Excel используется пакет XLConnect. Из файла Excel, из указанного листа, в R загружается именованная таблица.
Цвета для диаграммы взяты из таблицы корпоративных цветов Unilever.
Итак, код
require(XLConnect)
require(data.table)
require(ggplot2)
require(scales)

indata <- readTable(loadWorkbook("Unilever.xlsx"), 
                    sheet = "FinResults", 
                    table = "Unilever2012", 
                    useCachedValues = TRUE)

finreport <- data.table(indata)[, list(
                                  Segment = reorder(Segment, -Turnover),
                                  Cost = (Turnover - Profit),
                                  Forecast, Turnover, LastYear
                                  )]
turnover_format = function(...){
  function(x) paste("€B ", format(x/1000, ..., nsmall = 1L, scientific = FALSE, trim = TRUE))
}

chart <- ggplot(finreport, aes(x = Segment)) +
  geom_bar(aes(y = LastYear), stat = "identity", color = "#004976", fill = "white", width = 0.9) +
  geom_bar(aes(y = Turnover), stat = "identity", color = "white", fill = "#0085CA",  width = 0.6) +
  geom_crossbar(aes(ymin = Forecast, ymax = Forecast, y = Forecast), color = "#ED8800", width = 0.4, size = 0.7) +
  geom_point(aes(y = Cost), shape = 25, color = "#cedc00", fill = "white") +
  scale_y_continuous(breaks = pretty_breaks(20), labels = turnover_format()) +
  theme_bw() +
  theme ( panel.border = element_blank()
          , axis.line = element_line()
          , axis.title.x = element_blank()
          , axis.title.y = element_blank()
          , axis.text = element_text( size = 13, color = "#3C1053")
  )

print(chart)

Исходные данные: Univeler, годовой отчет и финансовая отчетность 2012, страница 92.
Теги:
Хабы:
Всего голосов 10: ↑9 и ↓1+8
Комментарии7

Публикации

Истории

Работа

Data Scientist
101 вакансия

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань