gnuplot의 디렉터리에 있는 모든 파일을 플롯합니다.

gnuplot의 디렉터리에 있는 모든 파일을 플롯합니다.

gnuplot에서 디렉토리의 모든 파일을 플롯하는 방법은 무엇입니까? 즉, 15개의 데이터 파일이 있으면 15개의 차트를 얻게 됩니다.

plot '???' with lines 

답변1

솔루션에는 다음 사항만 필요합니다.너무 많은주의 사항(파일 이름의 공백, 데이터는 없지만 폴더에 있는 파일 등). 자신의 책임하에 사용하십시오.

plot for [fn in system("ls")] fn with lines title ''.i

물론 올바른 접근 방식은 파일 이름을 순서대로 지정하고 for좀 더 정상적인 방식으로 다시 작성하는 것입니다.

plot for [i=1:15] `mydata`.i.`.dat` using 1:2 with lines title `data set `.i

forfor 는 plot최신 버전의 에서만 사용할 수 있습니다 gnuplot.

편집하다: 댓글과 채팅을 통해 요청하신 내용을 바탕으로 최종적으로 사용되는 양식입니다. 다시 한번 말하지만, 이는 빠르고 지저분하므로 위험 부담은 본인이 감수하고 사용하십시오.

j=0
do for [fn in system("ls")] {
    j=j+1; set term png
    set output ''.fn.'.png'
    plot fn with lines linecolor rgb "navy" title ''.i 
}

답변2

Weijun Zhou는 가능하지만 약간 불안정한 솔루션을 보여주었습니다. 데이터 파일 수가 많고 수식을 따르도록 수동으로 이름을 바꾸는 것이 실용적이지 않은 경우 파일 형식(.txt, .dat, 데이터가 저장되는 위치)을 확인하여 필요하지 않은 파일을 필터링할 수 있습니다. 필요하지 않습니다.

예: 폴더에 모든 .txt 파일을 그리고 향후 분석을 위해 .png로 저장합니다.

do for [fn in system("ls")] {
    len=strlen(fn)
    form=substr(fn,len-3,len)
    if (form eq ".txt") {
        set term png

        data=sprintf("%s",fn)
        filename=sprintf("%s.png",substr(fn,0,len-4))

        set output filename
        plot data using 1:2 title "Data"
        unset output
    }
}

이는 각 파일을 반복하여 .txt 파일인지 확인한 다음, 파일을 그려 원본 .txt 파일과 동일한 이름을 가진 .png로 저장합니다. 이렇게 하면 동일한 폴더에 중복된 .txt 파일이 없는 한 프로그램이 잘못된 파일 형식을 읽으려고 할 때 발생할 수 있는 문제를 피할 수 있습니다.

참고로, 이 스레드를 보는 사람이 Windows 버전의 Gnuplot에서 이 스레드를 실행하려는 경우 시스템 명령이 다르기 때문에 첫 번째 줄을 변경해야 합니다.

system("ls") => system("dir /b")

관련 정보