Это продолжение блога Доходность золота в разные периоды. В этом блоге я хотел бы показать, как создавать анимированные диаграммы с фасетами в R.
Установите следующие библиотеки и загрузите их в R:
- Ggplot2 для создания графиков,
- Ggthemes для настраиваемых тем
- Зоопарк для создания средств катания
- 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 не ожидает вектора.