Группировка прямоугольников в галлювиальный - PullRequest
1 голос
/ 06 мая 2020

Я создаю график c с помощью ggalluvial и хочу сгруппировать свои переменные слева.

library(tidyverse)
library(ggalluvial)

data <- tibble(left = c("a","b", "c", "c", "d", "d"),
        right = c("e", "e", "e", "f", "e", "f"),
        values = c(1,2,3,2,3,2),
        group = c("Group 3", "Group 2", "Group 1", "Group 1", "Group 2", "Group 2"))

ggplot(data,
      aes(y = values, axis1 = left, axis2 = right)) +
  geom_alluvium(aes(fill = group), width = 1/12) +
  geom_stratum(width = 1/12, fill = "black", color = "grey") +
  geom_text(stat = "stratum", infer.label = TRUE,
            nudge_x = -.1, fontface = "bold") +
  scale_fill_brewer(type = "qual", palette = "Set1")

Это дает цифру ниже:

enter image description here

Я раскрасил потоки в зависимости от их группы. Но я хочу сгруппировать левую часть на основе их группы. Т.е. новый порядок должен быть c, b, d, a сверху вниз, а не в алфавитном порядке по умолчанию.

Я был бы очень благодарен за помощь в поиске решения.

Спасибо.

1 Ответ

1 голос
/ 07 мая 2020

Вам необходимо определить left как коэффициент с уровнями в необходимом порядке c("c", "b", "d", "a").

data$left <- factor(data$left, levels=c("c", "b", "d", "a"))

ggplot(data,
      aes(y = values, axis1 = left, axis2 = right)) +
  geom_alluvium(aes(fill = group), width = 1/12) +
  geom_stratum(width = 1/12, fill = "black", color = "grey") +
  geom_text(stat = "stratum", infer.label = TRUE,
            nudge_x = -.1, fontface = "bold") +
  scale_fill_brewer(type = "qual", palette = "Set1")

enter image description here

...