"mu.colour" <-
function (labs, col, linetype, defaultcolour = 1) 
{
    len <- length(labs)
    if (length(col) == 2 * length(unique(labs))) {
        colours <- 1:length(labs)
        n <- 1
        while (n <= length(unique(labs))) {
            lab <- col[2 * n - 1]
            colour <- col[2 * n]
            colours[labs == lab] <- as.numeric(colour)
            n <- n + 1
        }
        col <- colours
    }
    else if (is.numeric(col)) {
        if (length(col) != length(labs)) 
            stop("length of colour vector differs from that of labels")
    }
    else if (!is.logical(col)) {
        col <- as.numeric((as.factor(col)))
        if (length(col) != length(labs)) 
            stop("length of colour vector differs from that of labels")
    }
    else {
        if (col) 
            col <- as.numeric((as.factor(labs)))
        else col <- rep(defaultcolour, len)
    }
    if (!is.logical(linetype)) {
        if (length(linetype) == 1) 
            linetype <- rep(linetype, len)
        else linetype <- as.numeric((as.factor(linetype)))
        if (length(linetype) != length(labs)) 
            stop("length of linetype vector differs from that of labels")
    }
    else {
        if (linetype) 
            linetype <- as.numeric((as.factor(labs)))
        else linetype <- rep(1, len)
    }
    foo <- NULL
    foo$colour <- col
    foo$linetype <- linetype
    p1 <- paste(labs, col, linetype)
    p1.temp <- duplicated(p1)
    foo$legend$lab <- labs[!p1.temp]
    foo$legend$col <- foo$colour[!p1.temp]
    foo$legend$lty <- foo$linetype[!p1.temp]
    return(foo)
}
