-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathDrawSpec.R
72 lines (72 loc) · 2.49 KB
/
DrawSpec.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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)
}
}