Презентации (PowerPoint) из R

Опубликовано Опубликовано в рубрике Интересное, Основная, Рецепты

Сегодня поговорим о чем-то простом и понятном, о применимости R для повседневной работы, для человека не отягощенного ШАДом.
В жизни любого аналитика крупной компании есть замечательный пласт работы, под названием Презентации. Нет, не так, правильнее — ПРЕЗЕНТАЦИИ POWER POINT !

У вас тоже эти слова никакого энтузиазма не вызывают ? Конечно, ведь надо, еженедельно, ежемесячно, в одном и том же формате, на корпоративном шаблоне, вырисовывать одни и те же показатели за прошедший период… Не дай Бог, предложить изменить формат! У совета Директоров ведь уже глаз настроен на цифру в определенной позиции слайда, на цветовое оформление слайда….
Короче — это не презентации Стива Джобса. Но это работа, которую надо делать.

А как у вас построен рабочий процесс этой работы?

Собрать данный из многих файлов Эксель в один. Построить сводные таблицы, построить по ним графики. Перетащить построенные графики в PowerPoint, чертыхаясь править форматирование слайдов ?

или более продвинуто

Запустить скрипт к корпоративному хранилищу, получить данные, перетащить в Эксель. Построить сводные таблицы, построить по ним графики. Перетащить построенные графики в PowerPoint, чертыхаясь править форматирование слайдов?

Если хоть чуть-чуть напоминает вашу жизнь, то R может вам помочь!
В заголовке поста — пример презентации построенной целиком в R.
И это именно презентация PowerPoint. Вот ее файл — http://ru-datascience.ru/wp-content/uploads/2015/11/Ready_present.pptx
Короткий ответ на вопрос «КАК?» — ответ «library(ReporteRs)»

Подробней:
вот кусок кода, который генерит именно презентацию (получение и обработку данных оставим за кадром):

############################ Выводим в презентацию
presentation_title <- c('Итоги январь-июль 2015г.')
presentator_name <- 'Автор: Выбегалло А.А.'
options('ReporteRs-fontsize'= 18, 'ReporteRs-default-font'='Arial')
doc <- pptx(template="SaleReport_Template.pptx" )

#Slide 1 : Title slide
#+++++++++++++++++++++++
doc <- addSlide(doc, "Титульный слайд")
doc <- addTitle(doc,presentation_title)
doc <- addSubtitle(doc, presentator_name)

#Slide 2 : Отгрузки по месяцам
#+++++++++++++++++++++++
doc <- addSlide(doc, "Только заголовок")
doc <- addTitle(doc,'Отгрузки по месяцам')
doc <- addFlexTable(doc, month_total_table, offx = 1, offy = 2, width = 4, height = 5)
doc <- addFlexTable(doc, month_sale_table, offx = 6, offy = 2, width = 3, height = 5)
doc <- addPlot(doc, month_sale_graph_fun , offx = 0, offy = 4.4, width = 9.5, height = 3)

#Slide 3 : Отгрузки по категориям
#+++++++++++++++++++++++
doc <- addSlide(doc, "Только заголовок")
doc <- addTitle(doc,'Отгрузки по категориям')
doc <- addFlexTable(doc, category_table, offx = 0.5, offy = 2, width = 4.8, height = 6)
doc <- addPlot(doc, month_cat_graph_fun , offx = 3.2, offy = 1.4, width = 8, height = 6)

writeDoc(doc, "Ready_present.pptx" )

Как видно — в принципе все просто. Важные моменты

  • Презентация создается на основе шаблона(template. В примере это — SaleReport_Template.pptx . Положить в рабочий каталог
  • После этого можно в презентацию добавлять слайды по названию слайда в шаблоне. Тут это «Титульный слайд» и «Только заголовок»
  • Затем размещаются картинки, текст, таблицы. Все это можно точно позиционировать. На самом деле над позиционированием надо будет поработать. Понятного принципа «Сетки» я что-то не ощутил и каждый элемент пришлось подгонять вручную
  • Для картинок можно использовать всю мощь графической подсистемы R. Но, возможно, для каждой библиотеки надо будет разбираться отдельно про особенности вывода в презентацию. Я использовал ggplot2. Тут особенность такая — для каждого графика надо создавать функцию вида plot <- function(){print(ggplot()+geom_line....)} и потом эта функция и ставится в процедуру addPlot. Из "особенностей" - нельзя вывести легенду, в случае использования градиентного цвета для непрерывной переменной. Но мы ведь с вами заменяем стандартные графики Excel, поэтому неактуально. Именно легенду нельзя вывести - сам график выводится. Короче речь про вот такую конструкцию: aes(color=VARIABLE).
  • В этом обзоре разобран сам процесс формирования презентации. За кадром остались закачка и обработка данных, формирование FlexTable.

    Полный работоспособный пример в исходном коде здесь: c30_print.R

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