2013-08-12 5 views
2

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

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 

Индекс последовательности по умолчанию график выглядит, как это и делает его очень трудно сравнить две группы: Default sequence index plot

ответ

2

Когда ylim дано в seqIplot, он используется для всех групп. Чтобы сделать высоты графика пропорциональными взвешенному числу последовательностей в каждой группе, верхний 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=...).

+0

Большое спасибо за вашу помощь! Я добавил некоторые куски кода и график для вашего ответа в соответствии с вашими предложениями. –

+1

Как правило, застрял в редактировании, вот фрагмент кода: макет (матрица (c (1,2,3,3), 2, 2, byrow = TRUE), высота = c (3,1)) seqIplot (mvad .seq [group == "no",], withlegend = FALSE, title = "no", border = NA, xtstep = 3, sortv = "from.start", ylim = c (0, nmax), yaxis = FALSE) ось (2, at = seq (от = 0, до = nmax + 25, by = 50)) seqIplot (mvad.seq [группа == "да",], withlegend = FALSE, title = "yes ", border = NA, xtstep = 3, sortv =" from.start ", ylim = c (0, nmax), yaxis = FALSE) ось (2, at = seq (от = 0, до = nmax + 25 , by = 50)) seqlegend (mvad.seq, ncol = 3, position = "top", xpd = TRUE) –

 Смежные вопросы

  • Нет связанных вопросов^_^