콘솔에서 차트(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'"

관련 정보