ggalluvial - отбросить некоторые наблюдения по оси - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь создать аллювиальную диаграмму, используя пакет ggalluvial.

Мои данные содержат несколько групп, одна из этих групп большая по сравнению с остальными группами и представляет интерес только для первых 24 оси 'на диаграмме.

Относительная разница в размере между группами затрудняет чтение небольших групп, которые являются ключевой точкой интереса.

Можно ли удалить "C "значения от оси y и z?

данные для построения:

library(dplyr)
set.seed(1)
data_to_plot <- tibble(
  t = "origin", 
  x = sample(c("A", "B", "C"), size = 10000, 
             prob = c(0.1, 0.2, 0.7), replace = TRUE)) %>%
  mutate(y = case_when(
    x == "A" ~ sample(c("A1", "A2", "A3"), size = n(), 
                      prob = c(0.3, 0.4, 0.3), replace = TRUE),
    x == "B" ~ sample(c("B1", "B2", "B3"), size = n(), 
                      prob = c(0.3, 0.4, 0.3), replace = TRUE),
    x == "C" ~ "C")) %>% 
  mutate(z = case_when(
    y == "A1" ~ sample(c("UP", "DOWN", "FORWARD"), size = n(), prob = c(0.4, 0.5, 0.1), replace = TRUE),
    y == "A2" ~ sample(c("UP", "DOWN", "FORWARD"), size = n(), prob = c(0.4, 0.5, 0.1), replace = TRUE),
    y == "A3" ~ sample(c("UP", "DOWN", "FORWARD"), size = n(), prob = c(0.4, 0.5, 0.1), replace = TRUE),
    y == "B1" ~ sample(c("UP", "DOWN", "FORWARD"), size = n(), prob = c(0.4, 0.5, 0.1), replace = TRUE),
    y == "B2" ~ sample(c("UP", "DOWN", "FORWARD"), size = n(), prob = c(0.4, 0.5, 0.1), replace = TRUE),
    y == "B3" ~ sample(c("UP", "DOWN", "FORWARD"), size = n(), prob = c(0.4, 0.5, 0.1), replace = TRUE),
    y == "C" ~ "C")) %>% 
  group_by(t, x, y, z) %>% 
  count()

head(data_to_plot)

# A tibble: 6 x 5
# Groups:   t, x, y, z [6]
  t      x     y     z           n
  <chr>  <chr> <chr> <chr>   <int>
1 origin A     A1    DOWN      160
2 origin A     A1    FORWARD    29
3 origin A     A1    UP        108
4 origin A     A2    DOWN      203
5 origin A     A2    FORWARD    34
6 origin A     A2    UP        170

код для создания графика:

data_to_plot %>% 
  ggplot(aes(y = n, axis1 = t, axis2 = x, axis3 = y, axis4 = z))+
  geom_alluvium(aes(fill = z), width = 0.6) +
  geom_stratum(alpha = 0.1, width = 0.6)+
  ggfittext::geom_fit_text(stat = "stratum", label.strata = TRUE, width = 0.6, min.size = 1)+
  scale_x_discrete(limits = c("start", "x", "y", "z"), expand = c(.05, .05))+
  scale_fill_brewer(type = "qual", palette = "Set1")

График с (неважно)Значения «C» представлены по осям y и z enter image description here

...