여러 파일에서 반복적으로 데이터를 검색하고 gnuplot의 동일한 그래프에 플로팅하는 방법이 있습니까? data1.txt, data2.txt …… data1000.txt와 같은 파일이 있다고 가정합니다. 각각 동일한 수의 열이 있습니다. 이제 다음과 같이 쓸 수 있습니다.
plot "data1.txt" using 1:2 title "Flow 1", \
"data2.txt" using 1:2 title "Flow 2", \
.
.
.
"data1000.txt" using 1:2 title "Flow 6"
그러나 이것은 정말 불편할 것입니다. gnuplot 에서 플롯 부분 을 반복하는 방법이 있는지 궁금합니다 .
답변
확실히 있습니다 (gnuplot 4.4 이상) :
plot for [i=1:1000] 'data'.i.'.txt' using 1:2 title 'Flow '.i
변수 i
는 변수 또는 문자열로 해석 될 수 있으므로 다음과 같이 할 수 있습니다.
plot for [i=1:1000] 'data'.i.'.txt' using 1:($2+i) title 'Flow '.i
선이 서로 오프셋되도록하려면.
help iteration
자세한 내용은 gnuplot 명령 줄에 입력 하십시오.
do for
구문 에 대한 @DarioP의 답변도 확인하십시오 . 기존 for
루프에 더 가까운 것을 제공합니다 .
답변
do { ... }
매우 강력한 gnuplot 4.6 이후 의 명령 도 살펴보십시오 .
do for [t=0:50] {
outfile = sprintf('animation/bessel%03.0f.png',t)
set output outfile
splot u*sin(v),u*cos(v),bessel(u,t/50.0) w pm3d ls 1
}
답변
all.p 스크립트가 있습니다.
set ...
...
list=system('ls -1B *.dat')
plot for [file in list] file w l u 1:2 t file
여기서 마지막 두 행은 휴리스틱이 아니라 리터럴입니다. 그럼 난 달려
$ gnuplot -p all.p
*.dat
가지고있는 파일 유형으로 변경 하거나 파일 유형을 추가하십시오.
다음 단계 :이 줄에 ~ / .bashrc 추가
alias p='gnuplot -p ~/./all.p'
그리고 파일을 all.p
홈 디렉토리와 짜잔에 넣으십시오 . p를 입력하고 Enter를 눌러 디렉토리의 모든 파일을 플롯 할 수 있습니다.
편집 작동하지 않았기 때문에 명령을 변경했습니다. 이전에는 list(i)=word(system(ls -1B *.dat),i)
.
답변
그래프에 플로팅 할 불연속 열이있는 경우 다음을 사용하십시오.
do for [indx in "2 3 7 8"] {
column = indx + 0
plot ifile using 1:column ;
}
답변
어떤 디렉토리에서든 작업하면서 와일드 카드를 사용하여 종종 서로 다른 디렉토리에 배치 된 여러 파일을 플로팅하고 싶었습니다. 내가 찾은 해결책은 다음 기능을 만드는 것입니다.~/.bashrc
plo () {
local arg="w l"
local str="set term wxt size 900,500 title 'wild plotting'
set format y '%g'
set logs
plot"
while [ $# -gt 0 ]
do str="$str '$1' $arg,"
shift
done
echo "$str" | gnuplot -persist
}
그리고 예를 들어 , 현재 디렉토리의 모든 파일과 레벨 업되고라는 디렉토리의 plo *.dat ../../dir2/*.out
모든 .dat
파일 을 플로팅하는 것과 같이 사용하십시오 ..out
dir2
답변
다음은 대체 명령입니다.
gnuplot -p -e 'plot for [file in system("find . -name \\*.txt -depth 1")] file using 1:2 title file with lines'
답변
