Я хочу создать график последовательности, как здесь (первая цифра, б)): http://traminer.unige.ch/preview-visualizing.shtml
Но я хочу использовать ggplot2
для этого.Я «растаял» данные для этой цели, потому что мне не нравится широкоформатный формат.Теперь я построил результирующие данные с geom_raster
, и результат был следующим:
Я ожидал получить шесть «горизонтальных блоков» в началекак и в первой ссылке (надеюсь, вы понимаете, о чем я), но переменная job довольно перемешана.Это мой код, я думаю, что только проблемы с порядком и те, которые используют ggplot
, имеют отношение к проблеме:
library(TraMineR)
library(data.table)
library(magrittr)
library(zoo)
library(stringr)
library(purrr)
library(ggplot2)
Sys.setlocale("LC_ALL","English")
data(mvad)
Data <- as.data.table(mvad)
rm(mvad)
Data %<>%
melt(measure.vars = c("Belfast", "N.Eastern", "Southern", "S.Eastern", "Western"),
variable.name = "school",
value.name = "school.boolean") %>%
.[school.boolean == "yes"] %>%
.[, -"school.boolean"]
time.vars <-
names(Data) %>%
.[str_detect(., "[:alpha:]{3}\\.[:digit:]{2}")]
boolean.cols <-
c("male", "catholic", "Grammar", "funemp", "gcse5eq", "fmpr", "livboth")
Data %<>%
melt(measure.vars = time.vars,
variable.name = "month",
value.name = "job") %>%
.[, month := as.yearmon(month, "%b.%y")] %>%
setorder(id, month) %>%
.[, (boolean.cols) := map(.SD, ~ {.x == "yes"}),
.SDcols = boolean.cols] %>%
.[, Sex := ifelse(male == TRUE, "Male", "Female")] %>%
.[, -"male"] %>%
setnames(names(.), names(.) %>% str_to_title) %>%
.[, Id := factor(Id, levels = Id[order(Job, Month)] %>% unique)]
Data %>%
ggplot(aes(x = Month, y = Id, fill = Job)) +
geom_raster() +
labs(y = NULL)
Редактировать: .[, Id := factor(Id, levels = Id[order(Month, Job)] %>% unique)]
тоже не работает.