2

プロセスが相関関係があるかどうかを確認するのにかかった時間の他のグラフの上にイベントの発生をプロットしようとしていますが、gnuplot でデータを適切に合計する方法がわかりません。データは数値ではないため、ヒストグラムのプロットに関連する資料を適用するのに問題があります。ここに私のデータがあります:

"2012-05-15 08:12:49","foo"
"2012-05-15 08:13:01","foo"
"2012-05-15 08:13:58","foo"
"2012-05-15 08:14:03","foo"
"2012-05-15 08:14:10","foo"
"2012-05-15 08:14:17","foo"
"2012-05-15 08:14:33","foo"
"2012-05-15 08:14:35","foo"

...

"2012-05-15 10:31:51","foo"
"2012-05-15 10:32:02","foo"
"2012-05-15 10:32:03","foo"
"2012-05-15 10:32:07","foo"
"2012-05-15 10:32:09","foo"
"2012-05-15 10:32:15","foo"

これはデータ ファイルの範囲です。その時点で発生したイベントの数を線で表すグラフが必要です

(したがって、これを、処理時間がプロットされている他のプロットに重ねることができます)

これは可能ですか?

編集:これまでにいくつかのオプションの組み合わせを試しましたが、読み取り可能なグラフは得られませんでした。これは私が使用している gnuplot ファイルでありtype1.csvtype2.csvオーバーレイしているグラフからのものです。small_report.csv は、「発生」データの 1000 行の抽出です。

4

2 に答える 2

3

ここでの秘訣は、x 軸 (ビニング) の計算を行うときに timecolumn() を使用することを忘れないことでした。

set xdata time
set timefmt "[%Y-%m-%y %H:%M:%S"
binwidth = 30  #30 second bin
bin(x,width) = width*floor(x/width)
plot "testdata.log" using (bin(timecolumn(1),binwidth)):(1.0) smooth frequency with boxes

上記の例は、指定されたビン幅内の発生を合計し、タイムライン全体にプロットします。

$gnuplot --version
gnuplot 4.6 patchlevel 4
于 2016-04-26T10:54:44.063 に答える
2

Python 2.7 では、特定の日付が表示される回数を数えるのは非常に簡単です。

from collections import Counter
with open('datafile') as fin:
    c = Counter(line.split()[0][1:] for line in fin)

for k,v in sorted(c.items()):
    print k,v

Python 2.7 を持っていない場合はdefaultdict、以前のバージョンでこれを模倣できます。

from collections import defaultdict
with open('datafile') as fin:
    c = defaultdict(int)
    for line in fin:
        c[ line.split()[0][1:] ] += 1

for k,v in sorted(c.items()):
    print k,v

これを使用してプロットを作成できます。

set timefmt '%Y-%m-%d'
set xdata time
plot "<python pythonscript.py" u 1:2
于 2012-12-04T16:46:54.723 に答える