배쉬로 gnuplot 플로팅 자동화


11

오류 여백이있는 선 그래프로 그려야하는 6 개의 파일이 있으며 다른 png 파일로 출력해야합니다. 파일 형식은 다음과 같습니다.

초 평균 평균 최소 최대

이 그래프를 자동으로 플로팅하는 방법은 무엇입니까? bash.sh라는 파일을 실행하면 6 개의 파일을 가져 와서 그래프를 다른 .png파일로 출력 합니다. 제목과 축 레이블도 필요합니다.

답변:


14

올바르게 이해하면 이것이 원하는 것입니다.

for FILE in *; do
    gnuplot <<- EOF
        set xlabel "Label"
        set ylabel "Label2"
        set title "Graph title"   
        set term png
        set output "${FILE}.png"
        plot "${FILE}" using 1:2:3:4 with errorbars
EOF
done

파일이 모두 현재 디렉토리에 있다고 가정합니다. 위는 그래프를 생성하는 bash 스크립트입니다. 개인적으로, 나는 보통 gnuplot_in어떤 형태의 스크립트를 사용하여 각 파일에 대해 위의 명령을 사용하여 gnuplot 명령 파일을 호출하고 (예를 들어 호출 )을 사용하여 플롯합니다 gnuplot < gnuplot_in.

파이썬에서 예제를 제공하려면 다음을 수행하십시오.

#!/usr/bin/env python3
import glob
commands=open("gnuplot_in", 'w')
print("""set xlabel "Label"
set ylabel "Label2"
set term png""", file=commands)

for datafile in glob.iglob("Your_file_glob_pattern"):
    # Here, you can tweak the output png file name.
    print('set output "{output}.png"'.format( output=datafile ), file=commands )
    print('plot "{file_name}" using 1:2:3:4 with errorbars title "Graph title"'.format( file_name = datafile ), file=commands)

commands.close()

어디 Your_file_glob_pattern이라고해도, 당신의 데이터 파일의 이름을 설명 무언가 *또는 *dat. glob모듈 대신에 os물론 사용할 수 있습니다 . 실제로 파일 이름 목록을 생성하는 것은 무엇이든.


1
귀하의 답변에 대한 귀하의 의견은 더 확실한 해결책입니다. 예를 보여주기 위해 답변을 확장하지 마십시오. +1
bsd

의견 주셔서 감사합니다. 게시물에 댓글을 달았을 때 방금 그렇게하고있었습니다.
Wojtek

0

임시 명령 파일을 사용하는 배쉬 솔루션 :

echo > gnuplot.in 
for FILE in *; do
    echo "set xlabel \"Label\"" >> gnuplot.in
    echo "set ylabel \"Label2\"" >> gnuplot.in
    echo "set term png" >> gnuplot.in
    echo "set output \"${FILE}.png\" >> gnuplot.in
    echo "plot \"${FILE}\" using 1:2:3:4 with errorbars title \"Graph title\"" >> gnuplot.in
done
gnuplot gnuplot.in

0

도움이 될 수 있습니다.

#set terminal postfile       (These commented lines would be used to )
#set output  "d1_plot.ps"    (generate a postscript file.            )
set title "Energy vs. Time for Sample Data"
set xlabel "Time"
set ylabel "Energy"
plot "d1.dat" with lines
pause -1 "Hit any key to continue"

스크립트 파일을 다음과 같이 실행하십시오 gnuplot filename.

자세한 내용은 여기를 클릭하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.