0

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

我的代码:

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)
4

2 回答 2

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) 

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

在此处输入图像描述

于 2013-06-03T20:45:04.047 回答
2

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

于 2013-06-03T19:53:46.883 回答