関心のある各(Java GC)イベントの行を含むCSVファイルがあります。オブジェクトは1秒未満のタイムスタンプ(等距離ではない)といくつかの変数で構成されています。オブジェクトは次のようになります。
gcdata <- read.table("http://bernd.eckenfels.net/view/gc1001.ygc.csv",header=TRUE,sep=",", dec=".")
start = as.POSIXct(strptime("2012-01-01 00:00:00", format="%Y-%m-%d %H:%M:%S"))
gcdata.date = gcdata$Timestamp + start
gcdata = gcdata[,2:7] # remove old date col
gcdata=data.frame(date=gcdata.date,gcdata)
str(gcdata)
結果は
'data.frame': 2997 obs. of 7 variables:
$ date : POSIXct, format: "2012-01-01 00:00:06" "2012-01-01 00:00:06" "2012-01-01 00:00:18" ...
$ Distance.s. : num 0 0.165 11.289 9.029 11.161 ...
$ YGUsedBefore.K.: int 1610619 20140726 20148325 20213304 20310849 20404772 20561918 21115577 21479211 21544930 ...
$ YGUsedAfter.K. : int 7990 15589 80568 178113 272036 429182 982841 1346475 1412181 1355412 ...
$ Promoted.K. : int 0 0 0 0 8226 937 65429 71166 62548 143638 ...
$ YGCapacity.K. : int 22649280 22649280 22649280 22649280 22649280 22649280 22649280 22649280 22649280 22649280 ...
$ Pause.s. : num 0.0379 0.022 0.0287 0.0509 0.109 ...
この場合、一時停止時間(秒単位)が重要です。ダイアグラムをプロットしたいと思います。これは、各(壁掛け時計)時間の平均を基本的に線で示し、2%と98%を灰色の廊下で示し、最大値(1時間以内)を赤い線で示します。
私はいくつかの作業を行いましたが、q98関数の使用は醜く、複数行のステートメントを使用する必要があるのは無駄に思えます。q02とq98の間の灰色の領域を実現する方法がわかりません。
q02 <- function(x, ...) { x <- quantile(x,probs=c(0.2)) }
q98 <- function(x, ...) { x <- quantile(x,probs=c(0.98)) }
hours = droplevels(cut(gcdata$date, breaks="hours")) # can I have 2 hours?
plot(aggregate(gcdata$Pause.s. ~ hours, data=gcdata, FUN=max),ylim=c(0,2), col="red", ylab="Pause(s)", xlab="Days") # Is always black?
lines(aggregate(gcdata$Pause.s. ~ hours, data=gcdata, FUN=q98),ylim=c(0,2), col="green")
lines(aggregate(gcdata$Pause.s. ~ hours, data=gcdata, FUN=q02),ylim=c(0,2), col="green")
lines(aggregate(gcdata$Pause.s. ~ hours, data=gcdata, FUN=mean),ylim=c(0,2), col="blue")
これで、最大の黒い点、1時間ごとの平均の青い線、および上下の0,2+0,98の緑の線を持つグラフが作成されます。灰色の廊下、おそらく最大の破線(赤)を使用して、軸ラベルを修正する方が読みやすいと思います。
助言がありますか?(ファイルは上にあります)