2012-07-05 72 views
0

Graph in which I got我的数据如下所示。我需要根据地区绘制图表。如果我们根据区域提取,每个列表不具有相同的元素数目。多行图与元素数量不同的工作.also如何为所有行提供不同的颜色

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 

要conviniently阅读,粘贴在表格格式

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) 

My图表不来正确,当我尝试使用 “线”,以绘制sapply。没有sapply也没有工作。它从下一个x轴点开始绘制。例如:促销日期从2012年5月5日开始。但在图表中,对于prod,该行从2012年5月6日开始。同样也适用于preprod。

另外请告知如何通过sapply调用时为多余的线条赋予多种颜色?

+0

这不是完全清楚你想做的事 - 我的回答如下是在读你的心我的最好的尝试。 (但在发布示例数据和代码方面付出了很大的努力) – Andrie 2012-07-05 11:29:10

回答

2

使用ggplot并保存自己很多麻烦:

library(ggplot2) 
avg_data$date <- as.Date(avg_data$date, format="%m/%d/%Y") 

ggplot(avg_data, aes(date, AveElapsedTime)) + geom_line(aes(col=region)) 

enter image description here

+0

您能否告知我是否可以下载该软件包并将其安装到服务器中,而不是从该命令直接执行,因为我们的服务器位于防火墙之后。 – Tamilan 2012-07-05 14:06:48

+0

请告知如何在剧情而不是ggplot中完成? – Tamilan 2012-07-12 07:13:19

+0

为什么?我使用'ggplot',因为它易于使用且功能强大。要在基础图形中做到这一点将需要我很长时间。 – Andrie 2012-07-12 07:17:16

相关问题