以下のようなデータを持っています。地域に基づいてグラフをプロットする必要があります。地域に基づいて抽出すると、各リストには同じ数の要素がありません。
avg_data
date region AveElapsedTime
5/1/2012 Beta 22
5/2/2012 Beta 34
5/3/2012 Beta 22
5/4/2012 Beta 44
5/5/2012 Beta 21
5/6/2012 Beta 65
5/7/2012 Beta 23
5/8/2012 Beta 26
5/9/2012 Beta 75
5/10/2012 Beta 32
5/3/2012 preprod 23
5/4/2012 preprod 32
5/5/2012 preprod 54
5/6/2012 preprod 45
5/7/2012 preprod 67
5/8/2012 preprod 33
5/10/2012 preprod 56
5/5/2012 prod 44
5/6/2012 prod 50
5/7/2012 prod 30
5/8/2012 prod 40
5/9/2012 prod 76
読みやすく、表形式で貼り付け
Date Beta preprod prod
5/1/2012 22
5/2/2012 34
5/3/2012 22 23
5/4/2012 44 32
5/5/2012 21 54 44
5/6/2012 65 45 50
5/7/2012 23 67 30
5/8/2012 26 33 40
5/9/2012 75 76
5/10/2012 32 56
これは私のRスクリプトです
avg_data <- read.table("qes.tbl", header=T, sep=",")
avg_data
dl <- avg_data[avg_data$region == "prod", "AveElapsedTime"]
dl
datel <- avg_data[avg_data$region == "prod", "date"]
datel
#Creating the graph pdf in the below path to give as a link in the mail
FL <- 20120631
file <- paste("graph", FL, "pdf", sep=".")
plot_colors <- c("blue","red","forestgreen","black")
pdf(file, height=4.5, width=9.5, onefile=TRUE)
graphplot <- function(l, REG, tl, num) {
dl <- REG[REG$region == l, tl]
datel <- REG[REG$region == l, "date"]
lines(datel, dl, type="l", pch=2, col=plot_colors[num])
}
drawGraph <- function(ab, y, z, s) {
#Creating X axis
x <- ab[ab$region == "Beta", z]
y <- ab[ab$region == "Beta", "date"]
a <- x
g_range <- range(0,x[!is.na(x)])
x[x==0] <- NA
plot(which(!is.na(x)),x[!is.na(x)], type="l", col="orange", ylim=g_range,axes=FALSE, ann=FALSE)
num=0
sapply(unique(ab$region[ab$region != "Beta"]), FUN=graphplot, REG=ab, tl=z, num=num+1)
x <- a
box()
axis(1, at=1:length(x), lab=FALSE)
text(1:length(x), par("usr")[3] - 2, srt=45, adj=1.2, labels=y, xpd=T, cex=0.3)
scale <- s
axis(2, las=1, at=scale*0:g_range[2], cex.axis=0.3)
main_title<-as.expression(z)
#Caculationg Mean, Upper limit and lower limit using the below commands
MEANLIMIT <- seq(length=length(x), from=mean(x), by=0)
ULIMIT <- seq(length=length(x), from=mean(x) + 2.66*sum(abs(diff(x)))/length(x), by=0)
LLIMIT <- seq(length=length(x), from=mean(x) - 2.66*sum(abs(diff(x)))/length(x), by=0)
lines(MEANLIMIT, type="l", col="black")
lines(ULIMIT, type="l", pch=2, lty=2, col="grey")
lines(LLIMIT, type="l", pch=2, lty=2, col="black")
title(main=main_title, col.main="red", font.main=4)
title(xlab="Test Execution Date", col.lab=rgb(0,0.5,0))
title(ylab="Millisecond", col.lab=rgb(0,0.5,0))
legend("topright", g_range[2], main_title, cex=0.4, col=c("blue"), lty=1);
}
lab<-as.character(avg_data$date)
AET <- avg_data$AveElapsedTime
MTitle <- "AveElapsedTime"
#Creating graph for Average Elapsed time
drawGraph(avg_data, lab, MTitle, 5)
sapply で「線」を使用してグラフを作成しようとすると、グラフが正しく表示されません。sapply がないと機能しません。次の x 軸ポイントから描画しています。例: 製品日は 2012 年 5 月 5 日からです。しかし、グラフでは、prod の場合、線は 2012 年 5 月 6 日から始まっています。preprod についても同様です。
また、sapply で呼び出したときに余分な行に複数の色を付ける方法を教えてください。