プログレスバーを作る

MikuHatsune2013-11-22

プログレスバー(R, Python)で進捗状況をプロンプトに出せるわけだが、プログレスバーがあってもいいんじゃね?と思って描いてみる。
saveGIF関数でGIFのめくる時間間隔が指定できるはずなのに、GIF化したあとで実際その指定した時間通りにプログレスバーが進んでいるかというとそうでもないっぽい。

library(animation)

sec <- 5 # 秒
interval <- 0.03 # GIFめくりの時間間隔
vec <- matrix(seq(0, sec, by=interval), nc=1)

# 好きな色を作る。
cols <- c("white", rainbow(length(vec)))
cols <- c("white", rev(gray.colors(length(vec), start=0, end=1)))

par(mar=c(0,0,0,0))
image(vec, axes=FALSE, col=cols)
polygon(par()$usr[c(1,2,2,1)], par()$usr[c(3,3,4,4)], lwd=10, border="black") # 外枠は黒なので好きに変更

# GIF化
saveGIF({
		for(i in head(seq(vec), -1)){
			vec0 <- replace(vec, seq(i), 0)
			par(mar=c(0,0,0,0))
			image(vec0, axes=FALSE, col=cols)
			polygon(par()$usr[c(1,2,2,1)], par()$usr[c(3,3,4,4)] ,lwd=10)
		}
	}, interval=interval, ani.width = 300, ani.height = 25)