Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
106 views
in Technique[技术] by (71.8m points)

traminer - How to configure y-axis using seqIplot in R?

I am trying to configure the y-axis of a sequence index plot using the R-package TraMineR, I figured out how to set a global limit for the y-axis which is helpful if you want compare the number of certain sequences between two or more groups as it equalizes the scale. But I did not manage to set the y-axis ticks (as in xtstep). Maybe you can quickly help me out using this example code:

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

The default sequence index plot looks like this and makes it very difficult to compare the two groups: Default sequence index plot

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

When a ylim is given in seqIplot, it is used for all groups. To make the plot heights proportional to the weighed number of sequences in each group, the upper ylim should be set as the value for to the most frequent group.

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) )

The tick labels on the y axis are sequence indexes. You can suppress them with by giving yaxis = FALSE to seqIplot. To display your own labels you can then issue something like (see the help of the axisfunction for details)

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

but in that case you should generate the seqIplot separately for each group with withlegend=FALSE and organize the plots yourself in a single graphic with layout or par(mfrow=...).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...