[OS]/Linux

gnuplot을 이용한 통계데이터 분석

하늘을닮은호수M 2008. 8. 20. 19:29
반응형

업무수행 중에 했던 경험을 정리 차원에서 적어 본다.
이 글은 gnuplot을 이용한 통계데이터를 도표로 만드는 예제이다.

이 글은 ftp 자동접속 & 특정 파일 내려받기 & 로그 분석 에 이어서 작성되는 문서이다.

원본 데이터는 다음과 같다.(밑에 부분은 생략)

original data

original data



여기서 필요한 데이터만을 갖고 오도록 한다.
나같은 경우는 2008로 시작하는 데이터 중에서 2, 13, 14, 15번째 column만을 갖어와 DEST_FILE에 저장하도록 하였다.

cat $FILE | grep "^2008-" | column -c 1 -c 15 | awk '{printf("%s\t%d\t%d\t%d\n", $2, $13, $14, $15);}' > $DEST_FILE

이렇게 하여 얻어진 데이터는 다음 그림과 같다.(밑에 부분은 생략)

Destination File

Destination File


이제 여기에서 얻어진 결과를 가지고 통계용 그래프를 gnuplot을 통해 생성한다.
스크립트로 작성하여 보았다.

#!/bin/csh -f
#날짜 설정
set TODAY=`date '+%Y%m%d'`
echo "Today is " $TODAY
set YESTERDAY=`date -d yesterday '+%Y%m%d'`

set WEEKDAY=`date -d yesterday '+%u'`
echo "weekday is " $WEEKDAY
set FRIDAY=`date -s "last Friday" '+%Y%m%d'`
echo "last Friday is " $FRIDAY
set TWODAYSAGO=`date -s "2 days ago" '+%Y%m%d'`
echo "2 days ago is " $TWODAYSAGO
#script를 *.plot으로 저장해서 한 번에 그리기 위해
touch ${YESTERDAY}_coll.plot

echo set terminal x11 >> ${YESTERDAY}_coll.plot
echo set term postscript eps enhanced color solid >> ${YESTERDAY}_coll.plot
echo set key spacing 4 >> ${YESTERDAY}_coll.plot
echo set size 2, 2 >> ${YESTERDAY}_coll.plot
echo set title \"${YESTERDAY}\' coll\" font \"Times-Roman, 40\" >> ${YESTERDAY}_coll.plot
echo set term post >> ${YESTERDAY}_coll.plot
echo set ylabel \"nums of coll\" font \"Times-Roman, 40\" >> ${YESTERDAY}_coll.plot
echo set xlabel \"hours\" font \"Times-Roman, 40\" >> ${YESTERDAY}_coll.plot
#도표에서 밑에 X측에 표시될 라벨을 시간(%H:%M:%S)형태로 표현되도록
echo set xdata time >> ${YESTERDAY}_coll.plot
echo set timefmt \"%H:%M:%S\" >> ${YESTERDAY}_coll.plot
echo set output \"${YESTERDAY}_coll.eps\" >> ${YESTERDAY}_coll.plot
#월요일이면 그 전 주 금요일과 비교하기 위해..(해당 사항이 없으면 스킵하시면 됩니다.)
if($WEEKDAY == 1) then
    echo plot \"${DEST_FILE}\" using 1:2 with linespoints lt 1 font \"Times-Roman, 40\", \"./analysis/${FRIDAY}.analysis\" using 1:2 with linespoints lt 2 font \"Times-Roman, 40\" >> ${YESTERDAY}_coll.plot
else
    echo plot \"${DEST_FILE}\" using 1:2 with linespoints lt 1, \"./analysis/${TWODAYSAGO}.analysis\"  using 1:2 with linespoints lt 2 >> ${YESTERDAY}_coll.plot
endif
echo Making a .plot for $YESTERDAY file..
gnuplot ${YESTERDAY}_coll.plot

#echo Converting eps file to jpg file..
convert ${YESTERDAY}_coll.eps ${YESTERDAY}_coll.jpg


이렇게 해서 얻어진 통계 그래프입니다.
사용자 삽입 이미지


reference : gnuplot tips
반응형