将多个图组合成单个图

时间:2013-06-03 19:42:31

标签: r plot dataframe

我正在编写一个代码来生成四个刺激,然后生成图形。我的代码有效,但我希望不是生成四个图形,而是将它们全部合并到一个图形中。我怎么能这样做?

我的代码:

queueSimulation <- function(arriverate, servrate, endtime) {
    queue = numeric(0)
    arrivetimes = rexp(10000, arriverate)
    servtimes = rexp(10000, servrate)

    clock = 0.0 
    clist=c() 
    qlist=c()
    while(clock <= endtime) {
       if(length(queue) > 0 && queue[1] < arrivetimes[1]) {
          clock = clock + queue[1]
          queue = queue[-1]   
       }   
       else {
          clock = clock + arrivetimes[1]
          queue[length(queue) + 1] = servtimes[1]
          arrivetimes = arrivetimes[-1]
          servtimes = servtimes[-1]
       }   

    #queue_size= length(round(clock, 2))
       clist = c(clist , clock)
       qlist = c(qlist , length(queue))
    }   
    a<-data.frame(time=clist , qsize=qlist)
    print(a)
    mean1<-mean(qlist)
    cat("Average :", mean1, "\n")
    plot(a)
}

并调用函数:

queueSimulation(1.0, 5.0, 100) 
queueSimulation(2.0, 4.0, 100)
queueSimulation(2.3, 3.5, 100) 
queueSimulation(4.0, 5.0, 100)

2 个答案:

答案 0 :(得分:2)

在调用绘图函数之前,请先查看layout,特别是layout(matrix(1:4,nrow=2))(或变体)。

答案 1 :(得分:2)

可能有一个更好的解决方案,但如何稍微改变你的方法。

1-在您的函数中,添加两个变量,一个用于颜色(cl),另一个用于告诉您的函数是绘制主图还是仅添加行(pl)。主要是1,行是0。

function(arriverate, servrate, endtime,cl,pl) {

2-使用if语句调用绘图,并将y轴固定为0到200之间。

if(pl==1){plot(a,col=cl,ylim=c(0,200),type="l")} else{lines(a,col=cl)}}

然后,用这两个变量(cl和pl)调用你的函数:

queueSimulation(1.0, 5.0, 100,"red",1)  
queueSimulation(2.0, 4.0, 100,"blue",0)  
queueSimulation(2.3, 3.5, 100,"green",0)  
queueSimulation(4.0, 5.0, 100,"black",0) 

我看到的问题是你的模拟可以为y轴获得超过200的值,也许试图找到一种方法来获得你的一个调用中的最大y值。

enter image description here