Как я могу сделать аллювиальный график с помощью ggplot2, чтобы показать результаты кросс-табуляции из spss? - PullRequest
1 голос
/ 12 июля 2020

Вот мои данные:

 df <- structure(list(language = c("German", "German", "German", "German", 
"German", "German", "German", "German", "French", "French", "French", 
"French", "French", "French", "French", "French", "Italian", 
"Italian", "Italian", "Italian", "Italian", "Italian", "Italian", 
"Italian"), main_variable = c("d02a", "d02a", "d02a", "d02a", 
"d02a", "d02a", "d02a", "d02a", "d02a", "d02a", "d02a", "d02a", 
"d02a", "d02a", "d02a", "d02a", "d02a", "d02a", "d02a", "d02a", 
"d02a", "d02a", "d02a", "d02a"), combination1 = c("very_attached", 
"very_attached", "quite_attached", "quite_attached", "rather_only_sympathiser", 
"rather_only_sympathiser", "not_attached_to_a_party", "not_attached_to_a_party", 
"very_attached", "very_attached", "quite_attached", "quite_attached", 
"rather_only_sympathiser", "rather_only_sympathiser", "not_attached_to_a_party", 
"not_attached_to_a_party", "very_attached", "very_attached", 
"quite_attached", "quite_attached", "rather_only_sympathiser", 
"rather_only_sympathiser", "not_attached_to_a_party", "not_attached_to_a_party"
), combination2 = c("male", "female", "male", "female", "male", 
"female", "male", "female", "male", "female", "male", "female", 
"male", "female", "male", "female", "male", "female", "male", 
"female", "male", "female", "male", "female"), count = c(24L, 
23L, 56L, 42L, 78L, 75L, 183L, 218L, 4L, 2L, 12L, 22L, 24L, 33L, 
48L, 68L, 3L, 3L, 8L, 9L, 4L, 3L, 5L, 9L)), class = "data.frame", row.names = c(NA, 
-24L))

Можно ли создать такую ​​диаграмму?

this

I would like to make a plot to show the results of a cross tabulation from spss like this Фрейм данных имеет структуру этой таблицы, но если есть что-то не так в процессе передачи во фрейм данных, я могу его обновить.

1 Ответ

2 голосов
/ 15 июля 2020

Вы можете попробовать что-нибудь в этом роде:

library(tidyverse)
library(ggalluvial)

df %>%
  ggplot(aes(y = count, axis1 = combination2, axis2 = language, axis3 = combination1)) +
  geom_alluvium(aes(fill = combination1), width = 0, knot.pos = 0, reverse = FALSE) +
  guides(fill = FALSE) +
  geom_stratum(width = 1/8, reverse = FALSE) +
  geom_text(stat = "stratum", aes(label = after_stat(stratum)), reverse = FALSE) +
  scale_x_continuous(breaks = 1:3, labels = c("Sex", "Language", "attachment level")) +
  ggtitle("This is a title")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...