我正在编写一个代码来生成四个刺激,然后生成图形。我的代码有效,但我希望不是生成四个图形,而是将它们全部合并到一个图形中。我怎么能这样做?
我的代码:
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)
答案 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值。