Mercurial > repos > marie-tremblay-metatoul > nmr_bucketing
view DrawSpec.R @ 9:62c62e31fc80 draft
planemo upload for repository https://github.com/workflow4metabolomics/nmr_bucketing commit fc2be0f9fa66f830d592d74d14b47a63e761647b
author | lecorguille |
---|---|
date | Fri, 21 Apr 2017 08:53:40 -0400 |
parents | |
children |
line wrap: on
line source
drawSpec <- function (X, startP = -1, endP = -1, groupLabel = NULL, useLog = -1, highBound = -1, lowBound = -1, xlab = NULL, ylab = NULL, main = NULL, nAxisPos = 4, offside = 0) { groupLabel_name = groupLabel X = as.data.frame(X) # colnames(X) = c(1:ncol(X)) X = as.matrix(X) if (highBound != -1) { for (i in 1:nrow(X)) { myIndex = which(X[i, ] > highBound) X[i, myIndex] = highBound } } if (lowBound != -1) { for (i in 1:nrow(X)) { myIndex = which(X[i, ] < lowBound) X[i, myIndex] = lowBound } } if (is.null(groupLabel)) { groupLabel = c(1:nrow(X)) groupLabel = as.factor(groupLabel) } else { levels(groupLabel) = c(1:length(levels(groupLabel))) } if (startP == -1) startP = 1 if (endP == -1) endP = ncol(X) if (is.null(xlab)) { xlab = "index" } if (is.null(ylab)) { ylab = "intensity" } if (is.null(main)) { main = paste(" ", startP + offside, "-", endP + offside) } GraphRange <- c(startP:endP) yn <- X[, GraphRange] if (useLog != -1) yn = log(yn) if (length(yn) > ncol(X)) { plot(yn[1, ], ylim = c(min(yn), max(yn)), type = "n", ylab = ylab, xlab = xlab, main = main, xaxt = "n") tempVal = trunc(length(GraphRange)/nAxisPos) xPos = c(0:nAxisPos) * tempVal axis(1, at = xPos, labels = colnames(X)[xPos + startP + offside]) for (i in 1:length(levels(groupLabel))) { groupLabelIdx = which(groupLabel == levels(groupLabel)[i]) color <- palette(rainbow(length(levels(groupLabel)))) for (j in 1:length(groupLabelIdx)) { lines(yn[groupLabelIdx[j], ], col = color[i]) } } if (!is.null(groupLabel_name)) { legendPos = "topleft" legend(legendPos, levels(groupLabel_name), col = as.integer(levels(groupLabel)), text.col = "black", pch = c(19, 19), bg = "gray90") } } if (length(yn) == ncol(X)) { plot(yn, ylim = c(min(yn), max(yn)), type = "n", ylab = ylab, xlab = xlab, main = main, xaxt = "n") tempVal = trunc(length(GraphRange)/nAxisPos) xPos = c(0:nAxisPos) * tempVal # axis(1, at = xPos, labels = xPos + startP + offside) axis(1, at = xPos, labels = colnames(X)[xPos + startP + offside]) lines(yn) } }