3

日付、クライアント、およびそのNFSの使用状況を含む膨大なデータのコレクションがあります。スーパーユーザーにアドバイスされているように、プロットにはラティスRパッケージを使用しています。また、Stackoverflowは、日付文字列を実際の日付オブジェクトに変換するのに役立ちました。

さて、私のコードはこれです:

require(lattice)

logfile <- read.table(file="nfsclients-2d.log")
names(logfile) <- c("Date","Client","Operations")

allcol <- c("blue","chocolate4","cornflowerblue","chartreuse4","brown3","darkorange3","darkorchid3","red","deeppink4","lightsalmon3","yellow","mistyrose4","seagreen3","green","violet","palegreen4","grey","slateblue3","tomato2","darkgoldenrod2","chartreuse","orange","black","yellowgreen","slategray3","navy","firebrick1","darkslategray3","bisque3","goldenrod4","antiquewhite2","coral","blue4","cyan4","darkred","orangered","purple4","royalblue4","salmon")
col=allcol[0:length(levels(logfile$Client))]

svg(filename="/tmp/nfsclients-2d.svg",width=14,height=7)

times <- as.POSIXct(strptime(levels(logfile$Date), format="%m/%d-%H:%M"))
logfile$Date <- times[logfile$Date]
xyplot(Operations~Date,group=Client,data=logfile,jitter.x=T,jitter.y=T,
 aspect = 0.5, type = "l",
 par.settings=list(superpose.line=list(col=col,lwd=3)),
 xlab="Time", ylab="Operations", main="NFS Operations (last 2 days, only clients with >40 operations/sec)",
 key=list( text=list(levels(logfile$Client)), space='right',
           lines=list(col=col),columns=1,lwd=3,cex=0.75))

dev.off()

そして、出力ファイルは次のとおりです(凡例を削除):

ここに画像の説明を入力してください

X軸の値は、ここではあまり役に立ちません: "tue" "tue""wed""wed"。ラベルとして最初の重要な値のみを取るようです。さらにいくつかのラベル(おそらく6または7)もより便利です。

2週間をプロットすると、さらに悪化します。X軸には「2012」「2013」の2つの値のみが表示されます。繰り返されることさえなく、2つの値だけです!

私がプロットしているデータ。

4

2 に答える 2

4

これはあなたの格子の質問に対する直接的な答えではありませんが、実際にはscalesここでパッケージをggplot2. 軸は好きなようにフォーマットできます。

p <- ggplot(dat = logfile, aes(x= Date,
                          y =Operations, 
                          group = Client,
                          color = Client ))+geom_line()

2 日間のデータしか提供されないので、アイデアを提示するために 10 時間でデータを分割します

library(scales) # to access breaks/formatting functions
p %+% scale_x_datetime(breaks = date_breaks("10 hour"), 
                    minor_breaks = date_breaks("2 hour"))

ここに画像の説明を入力

于 2013-01-09T19:45:24.350 に答える
3

この軸の適切な間隔を構築する必要があります。これが実際に前の 2 日間である場合は、おそらく次のようになります。

  interval <- as.POSIXct( Sys.Date() - c(1,3) )

次に、x 軸の scales 引数を作成する必要があります。

 xyplot(Operations~Date,group=Client,data=logfile,jitter.x=T,jitter.y=T,
         aspect = 0.5, type = "l",
         scales=list(x=list(at= .......  , 
                     labels=format( ......, "%H:%M") ),
          #rest of code
         )

..... 値に入力するものは、次の行に沿ったものになります。

   seq( interval[2], interval[1], by="4 hour")

これはformat.POSIXt呼び出しから返されるものです:

> format( seq( interval[2], interval[1], by="4 hour") , "%H:%M")
[1] "16:00" "20:00" "00:00" "04:00" "08:00" "12:00" "16:00" "20:00" "00:00" "04:00" "08:00" "12:00"
[13] "16:00"
于 2013-01-09T19:27:56.667 に答える