2008-10-28 10 views
4

gnuplot 4.2를 사용하면 특정 컬럼/행의 값을 얻고 그 값을 어떻게 사용할 수 있습니까?gnuplot의 다른 행에서 특정 엘리먼트의 값 얻기

plot 'datafile' using 1:2 

- 예를 들면 다음과 같습니다

,의 내 데이터 파일이 나는 것 컬럼 (1)가 x 축 및 열 2 간단한 줄거리를 들어

#1 2 
7 13 
5 11 
23 17 
53 12 

되어 다음과 y 축이 포함되어 가정 해 봅시다 내가 뭘 하려는지 그 열 (13)의 첫 번째 요소에 의해 2 열의 모든 데이터를 표준화하는 것입니다. gnuplot 자체에서이를 수행 할 수있는 방법이 있습니까 (즉, 먼저 스크립트 언어 나 데이터를 사전 처리하기위한 수단을 취하지 않고)?

건배

답변

0

광고 (13)의 전체 새 열, 다음 사용

음모 '데이터 파일'사용을 1 : ($ 2/$ 3)

2

베이스 값 (예 : 13) 인 경우 데이터 세트의 첫 번째 행은 CVS 버전의 gnuplot을 사용하여 원하는대로 할 수 있어야합니다.

running averages demo을 살펴보십시오. 이러한 라인을 따라 처음 호출 할 때 기본 변수를 사용자 정의 변수에 저장하고 후속 호출에서 해당 변수를 반환하는 사용자 정의 함수를 작성할 수 있습니다. 실행중인 평균을 사용하여

(즉, 데모에만 CVS 버전 나열되어 있기 때문에, 내가 필요한 기능이 현재 릴리스 버전에서는 사용할 수 없습니다 가정합니다.)

3

나는 정규화 플롯을 달성하기 위해 관리, 데모 두 번째 열의 첫 번째 값입니다.

base 변수는 참조 값을 저장하는 데 사용되며 first 함수는 첫 번째 행의 base을 초기화합니다.

first(x) = ($0 > 0 ? base : base = x) 
plot file.dat u 1:(first($2), base/$2) 

gnuplot 4.2를 사용하지 않았 음을 언급해야합니다.

편집 : Christoph의 조언을 사용하여 업데이트되었습니다.

+1

니스, +1. 좀 더 일반적인 방법으로'base' 값을 설정하기 위해 행 번호가 0인지 확인 할 수 있습니다 :'first (x) = ($ 0> 0? base : base = x)'. – Christoph