2012-06-10 2 views
2

나는 스크립트와 데이터 파일에 Gnuplot을 사용하고 있습니다."set title"문자열을 파일에서 가져올 수 있습니까?

내 스크립트에는 명령이 있습니다.

세트 제목 "여기 ㅋ 제목"

는 데이터 파일에서 가져온 해당 문자열을 할 수 있습니까? 예 : 데이터 파일에는 플롯의 제목이 포함되므로 많은 데이터 파일이있는 단일 스크립트를 사용할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 결론은 당신이 기본적으로 할 수 없다고 생각합니다. 그래서 지금은 인라인 데이터 (예 : gnuplot 스크립트 자체의 데이터)를 사용하는 방식을 취하고 있습니다. –

+0

데이터를 생성하는 툴을 가지고있는 것은 gnuplot 스크립트를 만들어 내기 때문에 내가 가끔씩 의지했던 방법이다. 행운을 빕니다. – mgilson

답변

2

대체 요법을 사용할 수 있습니다. 예 : 꽤 backtic 대체가 (당신은 문자열로 데이터 파일의 이름을 지정할 수 없습니다) 문자열 연산 이전에 완료되기 때문에 당신이 원하는 것을 얻을하지 않습니다하지만

set title "`head -1 datafile.dat`" 

. 그러나 매크로는 대체 대체 전에 확장됩니다.

내 테스트 데이터 파일처럼 보였다 :

"this is the title" 
10 20 
20 30 
30 40 

그리고 내 테스트 스크립트처럼 보였다 :

DATAFILE="datafile.dat" 
set macro 
TI='`head -1 '.DATAFILE.'`' #macro: Single quotes are important here to prevent expansion of backtics. 
set title @TI 
plot DATAFILE u 1:2 title columnhead(1) 

주 제목이 데이터 파일에 따옴표로 묶여 있지 않은 경우, 당신은거야 그 결과적으로 set title 명령이 유효하도록 을 추가해야합니다. (매크로 또는 데이터 파일에 추가 할 수 있습니다.)

5

순수한 gnuplot에서 쉽게 수행 할 수 있는지 확실하지 않지만 래퍼 bash 스크립트를 사용하는 솔루션입니다. 명령 행에서 plotscript.sh data.dat을 호출하여 스크립트를 사용합니다.

#!/bin/bash 

my_title=$(head -n 1 $1 | sed 's/^# \(.*\)/\1/') 

echo "set terminal postscript enhanced color 
set output 'plot.eps' 

set title '$my_title' 
plot '$1' u 1:2" | gnuplot 

는 TEXTFILE의 코드 스크립트 가능한 풋을 그것에 chmod +x를 실행합니다. 제목이 어떤 형식인지 알려 주시면 해당 내용에 맞게 스크립트를 조정할 수 있습니다. 이 스크립트에서는 제목이 다음 형식의 데이터 파일의 첫 번째 줄인 것으로 가정합니다.

# mytitle 

1 4 
2 5 
3 2 
+0

(+1) 몇 가지면에서이 솔루션이 내 것보다 더 우아하다고 생각합니다. 나의 유일한 제안은'echo' 대신에 here 파일을 사용하는 것입니다. 예 : 'gnuplot << EOF # 명령은 줄 바꿈과 모든 것을 가지고 여기에 있습니다. 개행 .EOF'. 이것은 문서에서 큰 따옴표를 이스케이프 처리하지 않고 계속 사용할 수 있다는 장점이 있습니다. – mgilson

관련 문제