배쉬로 gnuplot 플로팅 자동화 초 평균 평균 최소 최대 이

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

초 평균 평균 최소 최대

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



답변

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

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물론 사용할 수 있습니다 . 실제로 파일 이름 목록을 생성하는 것은 무엇이든.


답변

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

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


답변

도움이 될 수 있습니다.

#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.

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


답변