https://github.com/cran/fields
Raw File
Tip revision: ce722edae3c1b9e1af2985ce3500b11058facf0e authored by Doug Nychka on 24 August 2006, 01:46:17 UTC
version 3.04
Tip revision: ce722ed
bplot.obj.R
"bplot.obj" <-
function (data, pos = NA, width = NULL, labels = NULL, las = NULL, 
    add = FALSE, space = 0.25, sort.names = FALSE, xlab = "", 
    ylab = "", label.cex = 1, xaxt = "n", outlier = TRUE, horizontal = FALSE, 
    lwd = NA, col = NA, ...) 
{
    cols <- length(data)
    if (is.na(lwd)) {
        lwd <- par()$lwd
    }
    if (is.na(col)) {
        col <- par()$col
    }
    if (length(col) == 1) {
        col <- rep(col, cols)
    }
    if (length(lwd) == 1) {
        lwd <- rep(lwd, cols)
    }

    range.data <- c(NA, NA)

    if (is.null(labels)) {
        labels <- names(data)
    }

    if (is.na(pos[1])) {
        pos <- 1:cols
        if (sort.names) {
            pos <- order(labels)
        }
    }

    if (is.null(width)) {
        width <- min(diff(sort(pos))) * space
        if (cols == 1) 
            width <- space
    }

    if (length(width) == 1) 
        width <- rep(width, cols)
# determine limits for plotting bplots
    if (!add) {
        for (k in 1:cols) {
# if plotting oultiers too use the full range
# outliers are not plotted then just use limits of boxplot whiskers (in $bb)
         if( outlier){
            range.data <- range(c(range.data, data[[k]]$range), na.rm = TRUE)}
         else{
            range.data <- range(c(range.data, data[[k]]$bb), na.rm = TRUE)}


        }
        temp1 <- range.data
        temp2 <- range(c(pos - (0.5 * width)/space, pos + (0.5 * 
            width)/space))
        if (horizontal) {
            plot(temp1, temp2, type = "n", yaxt = xaxt, xlab = xlab, 
                ylab = ylab, ...)
        }
        else {
            plot(temp2, temp1, type = "n", xaxt = xaxt, xlab = xlab, 
                ylab = ylab, ...)
        }
    }
    for (i in 1:cols) {
        draw.bplot.obj(data[[i]], width[i], pos[i], outlier = outlier, 
            horizontal = horizontal, lwd = lwd[i], col = col[i])
    }
    if (label.cex > 0) {
        if (is.null(las)) {
            if (length(labels) > 7) {
                las <- 2
            }
            else {
                las <- 1
            }
        }
        if (horizontal) {
            axis.loc <- 2
        }
        else {
            axis.loc <- 1
        }
        axis(axis.loc, pos, labels, tick = FALSE, las = las, 
            adj = 0.5, cex = label.cex)
    }
    invisible()
}

back to top