Это продолжение блога Доходность золота в разные периоды. В этом блоге я хотел бы показать, как создавать анимированные диаграммы с фасетами в R.

Установите следующие библиотеки и загрузите их в R:

  1. Ggplot2 для создания графиков,
  2. Ggthemes для настраиваемых тем
  3. Зоопарк для создания средств катания
  4. Gganimate для создания анимации на графике.

Загрузите файл Excel для цен на золото и считайте набор данных в R в качестве фрейма данных. Фрейм данных должен содержать столбец Год, через который мы хотим анализировать, и годовое изменение цены (столбец y). В столбце type указывается скользящее среднее за один год.

Теперь нам нужно рассчитать подвижные средства для окон 5, 10 и 20 лет. Создайте отдельные фреймы данных и используйте функцию скользящего среднего в библиотеке зоопарка, чтобы создать скользящие средние и назначить столбцу типа 5 лет, 10 лет, 20 лет соответственно.

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

Создайте столбец изменения с метками отрицательное и положительное на основе столбца y.

Как только набор данных будет готов, мы можем построить график. Сначала создайте график geom_bar, используя функцию ggplot. Используйте функцию facet_grid для создания фасетов типа, уложенных вертикально. Чтобы раскрасить полосы на графике, укажите столбец change как fill и назначьте цвета графику с помощью функции scale_fill_manual. Я выделил красный и зеленый цвет для отрицательных и положительных изменений соответственно.

Теперь перейдем к анимационной части. Используйте метод transition_states, который можно добавить к диаграмме ggplot для анимации графика. Предоставьте столбец Year функции transition_states, чтобы анимировать изменение каждого года. Этот переход разделяет данные на несколько состояний на основе предоставленного столбца (в нашем случае Year) и выполняет анимацию между состояниями. Функция shadow_mark заставляет его оставлять тень вдоль следа, которая будет иметь ранее анимированные состояния. Без shadow_mark вы бы просто увидели, как диаграмма анимируется по одному кадру за раз.

Вы можете изменить динамику анимации с помощью функции easy_aes.

Я применил тему Highcharts JS, используя функцию theme_hc, доступную из библиотеки ggthemes, а также установил пользовательские размеры шрифта и интервалы на диаграмме.

Наконец, чтобы экспортировать диаграмму, я использовал функцию anim_save , которая аналогична функции ggsave. anim_save сохраняет диаграмму как gif. По умолчанию метод anim_save сохраняет график с очень низким разрешением, которое нельзя использовать для демонстрации, поэтому я добавил ширину и высоту в пикселях, чтобы получить наилучшее разрешение.

Вот окончательный анимированный график

Также можно анимировать через фасеты, указав столбец type для trainition_states. Но здесь можно указать столбец Год и столбец type, поскольку trainition_states не ожидает вектора.