Визуализация категорических данных во временных рамках - PullRequest
0 голосов
/ 24 февраля 2020

все еще довольно плохо знаком с R и отступил на некоторое время, поэтому, пожалуйста, потерпите меня. У меня есть набор данных, который описывает степень мобильности (категориальные данные) после операции через 3 дня. Я искал способ продемонстрировать поток через эти 3 дня.

Я пытался использовать geom_jitter, где x и y - 1-й и 2-й день, а aes(colour) - 3-й день, но это не совсем соответствует тому, что я хочу показать. Я немного изучил диаграмму Sankey Diagram и Parallel Coordinates, но у меня нет понимания, чтобы полностью соответствовать образцам, представленным другими, для моих данных.

Это то, что я пробовал:

test %>% filter(!is.na(Mob_D1.factor) & !is.na(Mob_D2.factor) & !is.na(Mob_D3.factor)) %>%
  ggplot(aes(x = Mob_D1.factor, y = Mob_D2.factor, colour = Mob_D3.factor)) + 
  geom_jitter(size = 5, alpha = 0.25, height = 0.25, width = 0.2) +
  scale_colour_brewer(palette = "Dark2", name = "Mobilisation on Day 3") +
  xlab("Mobilisation on Day 1") +
  ylab("Mobilisation on Day 2") + theme_minimal()

Как я уже сказал, не совсем то, что я хочу.

Это пример данных:

structure(list(Mob_D1.factor = structure(c(2L, 2L, 2L, 2L, 4L, 
1L, 2L, 2L, 1L, 4L, 2L, 4L, 2L, 1L, 2L, 4L, 4L, 2L, 4L, 4L, 2L, 
4L, 2L, 2L, 4L, 2L, 1L, 4L, 4L, 3L, 4L, 2L, 3L, 2L, 2L, 2L, 2L, 
2L, 4L, 4L, 2L, 4L, 4L, 2L, 2L, 4L, 2L, 4L, 4L, 4L), .Label = c("None", 
"Bed", "Stand", "Assisted Walk"), class = "factor"), Mob_D2.factor = structure(c(2L, 
3L, 2L, 4L, 4L, 1L, 3L, 4L, 4L, 4L, 3L, 4L, 2L, 2L, 2L, 4L, 4L, 
4L, 4L, 4L, 1L, 4L, 2L, 2L, 4L, 2L, 1L, 4L, 4L, 4L, 4L, 2L, 3L, 
2L, 2L, 2L, 4L, 4L, 2L, 4L, 3L, 4L, 4L, 2L, 2L, 4L, 4L, 4L, 4L, 
4L), .Label = c("None", "Bed", "Stand", "Assisted Walk"), class = "factor"), 
    Mob_D3.factor = structure(c(2L, 3L, 2L, 4L, 4L, 1L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 4L, 2L, 
    2L, 4L, 4L, 1L, 4L, 4L, 4L, 4L, 2L, 4L, 4L, 2L, 2L, 4L, 4L, 
    3L, 4L, 4L, 4L, 4L, 2L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("None", 
    "Bed", "Stand", "Assisted Walk"), class = "factor")), row.names = c(NA, 
-50L), class = c("tbl_df", "tbl", "data.frame"))

Заранее спасибо всем, кто нашел время, чтобы ответить. Любое расширенное объяснение будет оценено, поскольку я все еще учусь.

Ларри

1 Ответ

1 голос
/ 24 февраля 2020

Я не совсем уверен, каким должен быть ожидаемый результат, но может ли быть полезен барплот?

Редактировать

Теперь я думаю, что понимаю, что вам нужно, и Я нашел пакет ggalluvial, который может помочь вам в этом.

Надеюсь, это поможет.

library(tidyverse)
library(ggalluvial)

# Some data wrangling first. Add row_number to give a unique ID for each patient
d <- df %>% mutate(Patient = row_number()) %>% 
   # transform it to longer format
   pivot_longer(col=(-Patient), values_to = "Stage", names_to = "Day")

# Make the plot
ggplot(d,
   aes(x = Day, stratum = Stage, alluvium = Patient,
               fill = Stage, label = Stage)) +
      scale_fill_brewer(type = "qual", palette = "Set2") +
      geom_flow(stat = "alluvium", lode.guidance = "frontback",
                color = "darkgray") +
      geom_stratum()

Создано в 2020-02 -24 * представительный пакет (v0.3.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...