2016-06-07 2 views
1

나는 일련의 데이터 파일을 가지고 있으며, 단순히 각 파일의 색마다 범례가 변경되는 무비 파일에 표시하려고합니다.xmgrace에서 적절한 애니메이션 그래프를 만드는 방법은 무엇입니까?

:이 영화 아래와 같이 생산

convert -delay 50 fig-*.png animation.gif 

: 내가 사용하여 PNG 파일에서 영화를 만들기 위해 평소 convert 명령을 사용하여 그 후

for i in *dat; do gracebat $i -batch setup.batch -printfile fig-$i.png -hdevice PNG -hardcopy; done 

: 그래서 나는 다음과 같은 시도 이제 데이터 포인트에 따라 각 프레임의 색상과 범례를 변경하고 싶습니다. setup.batch 파일에서 뭔가를 바꿀 필요가 있다는 것을 알고 있지만 거기에 무엇을 써야하는지 알 수 없었습니다. 아무도 날 좀 도와 줄래? 누군가가 각 프레임에 플롯을 유지하는 대신 프레임에 하나의 플롯을 보여주는에 대한 아이디어가있는 경우

TITLE "Energy barrier" 
WORLD XMIN 0 
WORLD XMAX 2 
WORLD YMIN 0 
WORLD YMAX 0.6 
XAXIS TICK MAJOR 0.5 
XAXIS TICK MINOR 0.25 
YAXIS TICK MAJOR 0.1 
YAXIS TICK MINOR 0.05 
s0 LINE LINEWIDTH 2.0 

정말 도움이 될 것입니다 :

setup.batch 파일처럼 보인다. 예를 들어, 이제는 각 단계마다 단 한 줄만 표시되지만 방법은 무엇입니까? 이전 프레임을 8 번째 프레임에서 유지하면 모든 8 개의 플롯을 표시 할 수 있습니까?

+0

모든 단계에서 setup.batch 파일을 변경해야한다는 것을 알고 있습니다. 그래서 다음과 같은 시도했지만 여전히 작동하지 않습니다. * .dat의 i에 대해 ; gracebat $ i -batch setup.batch $ i -printfile 그림 - $ i.png -hdevice PNG -hardcopy; done 각 배치 파일에 대해 다른 색상을 정의한 곳입니다. – baban

답변

2

하나의 옵션은 데이터 파일의 수만큼 배치 파일을 만드는 것입니다. 다음 bash 스크립트는 자동으로 배치 파일을 생성합니다.

#!/bin/bash 
rm -f temp.batch 
c=0; 
for fullname in `find . -name "*.dat"`; do 
    # Extract filename without extension 
    fname=$(basename "$fullname") 
    fname="${fname%.*}" 

    # Keeping the plots in each frame 
    echo READ BLOCK \"${fname}.dat\" >> temp.batch 
    echo BLOCK xy \"1:2\" >> temp.batch 
    echo s$c LINE LINEWIDTH 2.0 >> temp.batch 
    echo s$c LINE COLOR $((c+1)) >> temp.batch   # change the colour 
    echo >> temp.batch # a blank line for readability 

    cat temp.batch >> plot${fname}.batch 

    # Set formatting and other global options 
    echo WORLD XMIN 0 > plot${fname}.batch    # create or overwrite file 
    echo WORLD XMAX 2 >> plot${fname}.batch 
    echo WORLD YMIN 0 >> plot${fname}.batch 
    echo WORLD YMAX 0.6 >> plot${fname}.batch 
    echo XAXIS TICK MAJOR 0.5 >> plot${fname}.batch 
    echo XAXIS TICK MINOR 0.25 >> plot${fname}.batch 
    echo YAXIS TICK MAJOR 0.1 >> plot${fname}.batch 
    echo YAXIS TICK MINOR 0.05 >> plot${fname}.batch 
    echo PRINT TO \"${fname}.png\" >> plot${fname}.batch 
    echo HARDCOPY DEVICE \"PNG\" >> plot${fname}.batch 
    echo PRINT >> plot${fname}.batch 
    ((c++)); 
done 
rm -f temp.batch 

.png 이미지 시퀀스를 생성하기 위해 호출에 gracebat 하였다.
for fullname in `find . -name "*.dat"`; do 
    fname=$(basename "$fullname") 
    fname="${fname%.*}" 
    gracebat -batch plot${fname}.batch -nosafe 
done 

그런 다음 각각의 새로운 프레임에 기존 플롯을 유지, 각 데이터 세트에 대한 고유 한 색상으로 영화를 만들기 위해 convert 명령을 사용합니다.

물론 색상을 변경하고 이전 플롯을 유지하지 않으려면 bash 스크립트에서 plot${fname}.batch으로 temp.batch을 대체하고 연결 라인을 제거하십시오.

관련 문제