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

от автора

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

  • оборот в завершившемся году (фактические цифры);
  • установленные ранее планы на завершившийся год (для анализа выполнения);
  • оборот годом ранее (для понимания динамики);
  • прибыльность.

Стандартная столбчатая диаграмма, которую можно на скорую руку построить в 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.

ссылка на оригинал статьи http://habrahabr.ru/post/220135/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *