Добавление данных метки к оси графика Санки с помощью пакета ggalluvial

Как мне добавить имена меток в белые поля к каждой из трех осей на графике галлювиального санки из фрейма данных? (см. изображение)

В столбце «Страна» есть наблюдения для нескольких стран. В приведенном ниже примере я сфокусирован на Ирландии, у которой есть ярлык "IE". Как мне собрать фрейм данных для названия страны, используя приведенный ниже код ggplot? Я также буду выполнять эту задачу для имен «Вакцина» и «Целевая группа», поэтому, если решение может включать и эти столбцы, я был бы признателен. Спасибо

Код фрейма данных и цвета sankey - данные взяты из ЕС ECDC.

      data <- read.csv("https://opendata.ecdc.europa.eu/covid19/vaccine_tracker/csv/data.csv", na.strings = "", fileEncoding = "UTF-8-BOM")
colnames(data)[2] <- "Country"
TestData <- data
Ireland <- subset(TestData, Country == "IE")

Combined <- rbind(Ireland ) #removed other countries for ease of reading

Col1 <- "slateblue2"
Col2 <- "chartreuse2"
Col3 <- "tomato2"
Col4 <- "orange2"
Col5 <- "plum3"
Col6 <- "grey43"
Col7 <- "deeppink"

alpha <- 0.2

Это код sankey - здесь я НЕ ПРАВИЛЬНО накладываю метки на соответствующую ось.

      ggplot(Combined,
       aes(weight = FirstDose, axis1 = Vaccine, axis2 = Country, axis3 = TargetGroup)) +
  geom_alluvium(aes(fill = Vaccine, color = Vaccine), 
                width = 0.1, alpha = alpha, knot.pos = 0.4) +
  geom_stratum(width = 0.2, color = "black") +
  geom_label(stat = "stratum", label.strata = TRUE) +
  scale_x_continuous(breaks = 1:3, labels = c("Vaccine", "Country", "TargetGroup"))     +
  scale_fill_manual(values  = c(Col1, Col2, Col3, Col4, Col5, Col6, Col7)) +
  scale_color_manual(values = c(Col1, Col2, Col3, Col4, Col5, Col6, Col7)) +
  ggtitle("ECDC Vaccination data") +
  theme_minimal() +
  theme(
    axis.text.x = element_text(size = 12, face = "bold")
  )

Это изображение - вы можете видеть, что у ящиков осей отсутствуют метки

1 ответ

Разобрался - полный кусок кода здесь. Я надеюсь, что это поможет кому-то

      ggplot(Combined,
       aes(weight = FirstDose, axis1 = Vaccine, axis2 = Country, axis3 = TargetGroup)) +
  geom_alluvium(aes(fill = Vaccine, color = Vaccine), 
                width = 0.1, alpha = alpha, knot.pos = 0.4) +
  geom_stratum(width = 0.2, color = "black") +
  geom_text(stat = "stratum", aes(label = after_stat(deposit)),
            color = "black") + 
  geom_label(stat = "stratum", aes(label = after_stat(stratum)), min.y = 200) + 
  scale_x_continuous(breaks = 1:3, labels = c("Vaccine", "Country", "TargetGroup"))     +
  scale_fill_manual(values  = c(Col1, Col2, Col3, Col4, Col5, Col6, Col7)) +
  scale_color_manual(values = c(Col1, Col2, Col3, Col4, Col5, Col6, Col7)) +
  ggtitle("ECDC Vaccination data") +
  theme_minimal() +
  theme(legend.position = "none",     panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),     axis.text.y = element_blank(),       
        axis.text.x = element_text(size = 12, face = "bold")
  )

Добавив эти две строки (и я еще не совсем их понимаю) после geom_stratum()аргумент. Этикетки там, где я хочу. Это еще не красиво.

        geom_text(stat = "stratum", aes(label = after_stat(deposit)),
            color = "black") + 
  geom_label(stat = "stratum", aes(label = after_stat(stratum)), min.y = 200) + 

Решение

Ответ был найден в этом сообщении в блоге http://corybrunson.github.io/ggalluvial/reference/stat_stratum.html .

Другие вопросы по тегам