Как настроить ось Y с помощью seqIplot в R?

Я пытаюсь настроить ось Y графика индекса последовательности, используя R-пакет TraMineR, я понял, как установить глобальный предел для оси Y, который полезен, если вы хотите сравнить количество определенных последовательностей между двумя или больше групп, поскольку это выравнивает шкалу. Но мне не удалось установить галочки по оси Y (как в xtstep). Может быть, вы можете быстро помочь мне, используя этот пример кода:

library(TraMineR) 
data(mvad)
mvad.alphabet <- c("employment", "FE", "HE", "joblessness", "school",
                      "training")
mvad.labels <- c("Employment", "Further Education", "Higher Education",
                    "Joblessness", "School", "Training")
mvad.scodes <- c("EM", "FE", "HE", "JL", "SC", "TR")

## Define sequence objects
mvad.seq <- seqdef(mvad[, 17:86], alphabet = mvad.alphabet,
                     states = mvad.scodes, labels = mvad.labels, weights = mvad$weight, xtstep = 6)

## Plots
seqIplot(mvad.seq, group=mvad$gcse5eq, withlegend=TRUE, border=NA, xtstep=3, sortv="from.start") ## Default plot
seqIplot(mvad.seq, group=mvad$gcse5eq, withlegend=TRUE, border=NA, xtstep=3, sortv="from.start", ylim=c(0, 400)) ## Plot with custom ylim to compare the number of sequences between groups

График индекса последовательности по умолчанию выглядит следующим образом, что очень затрудняет сравнение двух групп: График индекса последовательности по умолчанию


person non-numeric_argument    schedule 12.08.2013    source источник


Ответы (1)


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

group <- mvad$gcse5eq
(nseq <- xtabs(mvad$weight ~ group))
(nmax <- max(nseq))
seqIplot(mvad.seq, group=group, withlegend=TRUE,
         border=NA, xtstep=3, sortv="from.start",
         ylim=c(0, nmax) )

Метки деления на оси Y являются индексами последовательности. Вы можете подавить их, указав yaxis = FALSE в seqIplot. Чтобы отобразить свои собственные метки, вы можете ввести что-то вроде (подробности см. в справке по функции axis)

axis(2, at = c(1, nseq[1]))

но в этом случае вы должны генерировать seqIplot отдельно для каждой группы с withlegend=FALSE и самостоятельно организовывать графики в один график с layout или par(mfrow=...).

person Gilbert    schedule 14.08.2013
comment
Большое спасибо за вашу помощь! Я добавил несколько фрагментов кода и график к вашему ответу, следуя вашим предложениям. - person non-numeric_argument; 14.08.2013
comment
Поскольку редактирование застряло, вот кусок кода: layout(matrix(c(1,2,3,3), 2, 2, byrow = TRUE), heights=c(3,1)) seqIplot(mvad.seq [группа == нет,], с легендой = ЛОЖЬ, заголовок = нет, граница = NA, xtstep = 3, sortv = from.start, ylim = c (0, nmax), ось y = FALSE) ось (2, at = seq (от=0, до=nmax+25, by=50)) seqIplot(mvad.seq[group==yes,], withlegend=FALSE, title=yes, border=NA, xtstep=3, sortv=from.start , ylim=c(0, nmax), ось y=FALSE) ось(2, at = seq(from=0, to=nmax+25, by=50)) seqlegend(mvad.seq, ncol=3, position=top , xpd=ИСТИНА) - person non-numeric_argument; 14.08.2013