1

ちょっと変わったリクエストですが、ご了承ください。

高度に並列化されたサーバー側コードから取得したログ データを含む Excel スプレッドシートがあります。ログにギャップがある可能性がある場所を分析しようとしています。これは、ログに記録する必要があるがログに記録されていないタスクを示しています。しかし、これは 12 ほどの並列スレッドのシリアルなタイムスタンプ順のリストであるため、非常に読みにくいものです。そこで、重複するタスクを視覚化するためにガント チャートを使用するという型破りなアイデアを思いつきました。Excel はこれが苦手なので、別のツールを探し始め、R を試すことを考えました。

ログ内の各タスクには、開始タイムスタンプ、終了タイムスタンプ、および期間が含まれているため、必要なデータが得られます。私はこの SO の投稿を読み、例をこの R スクリプトに変更しました。

tasks <- c("Task1", "Task2")
dfr <- data.frame(
  name        = factor(tasks, levels = tasks),
  start.date  = c("07/08/2013 09:03:25.815", "07/08/2013 09:03:25.956"),
  end.date    = c("07/08/2013 09:03:28.300", "07/08/2013 09:03:30.409"),
  is.critical = c(TRUE, TRUE)
)

mdfr <- melt(dfr, measure.vars = c("start.date", "end.date"))

ggplot(mdfr, aes(as.Date(value, "%d/%m/%Y %H:%M:%OS"), name, colour = is.critical)) + 
  geom_line(size = 6) +
  xlab("") + ylab("") +
  theme_bw()

ただし、これは機能しません。データはプロットされず、時間軸はすべてめちゃくちゃです。(当然のことながら) 1 秒未満のガント チャートをプロットするのは奇妙なことだと思います。私は完全な R 初心者です (ただし、長い間試してみる言い訳を探していました) - これを機能させる簡単な方法はありますか?

4

1 に答える 1

1

まず、時間と分も含まれているため、時間はPOSIXctフォーマットである必要はありません。Date融解したデータフレームに新しい列を正しい形式で追加できます。

mdfr$time<-as.POSIXct(strptime(mdfr$value, "%d/%m/%Y %H:%M:%OS"))

次にscale_x_datetime()、ブレークが軸上にある場所を制御できます。x 値には、正しい形式の新しい列を使用します。

library(scales)
ggplot(mdfr, aes(time,name, colour = is.critical)) + 
  geom_line(size = 6) +
  xlab("") + ylab("") +
  theme_bw()+
  scale_x_datetime(breaks=date_breaks("2 sec"))
于 2013-08-07T11:41:50.453 に答える