Хобрук: Ваш путь к мастерству в программировании

Разделитель запятых для меток данных на аллювиальном графике (R ggalluvial)

Я хочу отформатировать метки значений с помощью разделителей ",", особенно на стратах (столбцах столбцов) графика Аллювиальный / Санки, используя R ggalluvial.

Хотя аналогичные ответы были найдены на других диаграммах, та же попытка вернулась ошибка (обратите внимание на отсутствующие метки значений и испорченные соединения потоков):

library(ggplot2)
library(ggalluvial)
library(scales)

vaccinations$freq = vaccinations$freq * 1000 
ggplot(vaccinations,
       aes(x = survey, stratum = response, alluvium = subject,
           y = freq,
           fill = response, label = comma(freq))) +
  scale_x_discrete(expand = c(.1, .1)) +
  geom_flow() +
  geom_stratum(alpha = .5) +
  geom_text(stat = "stratum", size = 3) +
  theme(legend.position = "bottom") +
  ggtitle("vaccination survey responses at three points in time")
Warning message:
Removed 12 rows containing missing values (geom_text).

  • Я думаю, это как-то связано с тем, как ggalluvial обрабатывает информацию о ярлыках, передаваемую stat_straum. Он ожидает числовое значение, и я не смог найти возможности изменить форматирование впоследствии. Вы можете попробовать вычислить содержимое stratum самостоятельно и использовать отдельный фрейм данных для geom_text. 03.09.2019

Ответы:


1

Как подозревает @TobiO, внутренности ggalluvial не позволяют этому работать. В частности, когда числовая переменная передается в label и обрабатывается одной из аллювиальных статистических данных, она автоматически суммируется. Когда в label передается символьная переменная, это невозможно. Таким образом, форматирование должно происходить после статистического преобразования.

Решение предлагает ggfittext: функция geom_fit_text() имеет параметр formatter, которому может быть передана функция форматирования, хотя функция должна быть совместима с типом переменной, переданной в label! Вот пример:

library(ggalluvial)
#> Loading required package: ggplot2
library(ggfittext)
library(scales)
data(vaccinations)
vaccinations <- transform(vaccinations, freq = freq * 1000)
ggplot(vaccinations,
       aes(x = survey, stratum = response, alluvium = subject,
           y = freq,
           fill = response, label = freq)) +
  scale_x_discrete(expand = c(.1, .1)) +
  geom_flow() +
  geom_stratum(alpha = .5) +
  geom_fit_text(stat = "stratum", size = 10, min.size = 6, formatter = comma) +
  theme(legend.position = "bottom") +
  ggtitle("vaccination survey responses at three points in time")

Создано 4 сентября 2019 г. пакетом REPEX (v0.2.1)

04.09.2019
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..