コンソールからチャート(PNGまたはJPG形式)を作成しますか?

コンソールからチャート(PNGまたはJPG形式)を作成しますか?

このデータに基づいてOpenOfficeでチャートを作成できます。

$ cat time.log 
2014-04-29 08:15:34 1.00
2014-04-29 08:15:36 1.00
2014-04-29 08:15:42 1.50
2014-04-29 08:15:47 2.00
2014-04-29 08:15:55 2.00
2014-04-29 08:16:02 3.00
2014-04-29 08:16:10 4.00
2014-04-29 08:19:31 6.00
$ 

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

尋ねる:ところで、コンソールプログラムを使用して同じチャートをどのように生成しますか? Linux(Ubuntu 12.04を使用)にチャートジェネレータアプリケーションがありますか? 「time.txt」には平均200行を含めることができます。

ps:以下はコマンド実行の出力です。

$ { /usr/bin/time -f "%e" sleep 6 ; } 2>&1 | sed "s/^/`date "+%F %H:%M:%S"`\t/g" >> time.log

答え1

他の方々がすでに指摘したように、グヌプロット作業に適したツールです。以下は、Gnuplotを使用してデータを収集し、データからヒストグラムを生成するために使用されるシェルスクリプトです。

#!/bin/sh
LOGFILE=./time.log
OUTFILE=./time-plot.png

{ /usr/bin/time -f "%e" sleep 6 ; } 2>&1 | sed "s/^/`date "+%F %H:%M:%S"`\t/g" >> "$LOGFILE"

gnuplot << EOF
set lmargin at screen 0.20
set rmargin at screen 0.85
set bmargin at screen 0.30
set tmargin at screen 0.85
set datafile separator " "
set title ""
set ylabel ""
set yrange [0:7]
set xlabel ""
set xtics rotate by 45 right
set style fill solid 1.00 noborder
set boxwidth 2 relative
set terminal png
set output "$OUTFILE"
plot "$LOGFILE" using 3:xticlabels(stringcolumn(1) . " " . stringcolumn(2)) with histogram notitle linecolor rgb 'blue'
EOF

下記のサンプルデータ用に生成されたサンプルプロット:

サンプル入力で生成されたグラフの例

この例では、Gnuplot 4.6.0で導入されたticアライメントオプションを使用して、サンプルプロットのx軸ラベルの回転を一致させます。 Ubuntu 12.04用にパッケージされたGnuplot 4.4.3では、rightticソートオプションは使用できません。正確な外観が問題にならない場合は、スクリプトを以前のバージョンのGnuplotと互換性があるように次のように置き換えます。leftcenterset xtics rotate by 45 rightset xtics rotate

答え2

この目的のためにラテックスを使用することができる。適切なテンプレートを作成し、一緒に切り取ります。 time.logがよりパーサーに優しく見えると仮定する迅速で汚い例:

2014-04-29 08:15:34, 1.00
2014-04-29 08:15:36, 1.00
2014-04-29 08:15:42, 1.50
2014-04-29 08:15:47, 2.00
2014-04-29 08:15:55, 2.00
2014-04-29 08:16:02, 3.00
2014-04-29 08:16:10, 4.00
2014-04-29 08:19:31, 6.00

templ.texという単純なテンプレートです(データに合わせて最適化する必要があります)。

\documentclass[12pt]{article}
\usepackage{bardiag}
\begin{document}

\bardiagrambegin{9.5}{20}{20cm}{1}{2}{1cm}{0.5cm}

小さなスクリプトもあります:

#!/bin/bash
IFS="
"
cat templ.tex > new.tex
for line in `cat time.log`;do
    echo ${line} | sed -e 's/\(.*\),\s*\(.*\)/\\baritem\{\1\}\{\2\}{blue}/' >> new.tex
done
printf "\\\bardiagramend{}{}\n\\\end{document}" >> new.tex    
latex new.tex

答え3

私はしばらく前に同様のケースを経験しました。私はグヌプロットを使います。

次の例を使用できます(テストされていません)

図.p

set datafile separator " "
set title "Title"
set xlabel "Data"
set xtics rotate
set xdata time
set timefmt "%Y-%m-%d %H:%M:%s"
set format x "%Y-%m-%d %H:%M:%s"
set ylabel "Count"
set terminal png
set output "diagram.png"
plot ["2014-04-29 08:00":"2014-04-29 09:00"] 'time.log ' using 1:2 title "Diagram" with lines

gnuplot -e "load 'diagram.p'"

関連情報