2014-05-15 4 views
1

일부 측정 값을 데이터 파일에 플롯하려고합니다. 다음은 데이터의 간단한 예입니다.데이터 파일의 일부 플롯

1 7 100 
1 15 200 
1 31 300 
2 7 150 
2 15 300 
2 31 400 

알다시피 3 개의 열이 있습니다. 두 번째 열은 x 축이어야하며 세 번째 열에는 값이 들어 있습니다. 그러나 어떻게 gnuplot을 컬럼 1의 모든 고유 값에 대한 새로운 플롯으로 만들 수 있습니까? 위의 예제는 두 개의 플롯을 초래할해야 하나라는 1이라는 하나 2.

답변

3

이 이것에 대해 갈 적어도 두 가지 방법은 다음과 같습니다

각 거기에 얼마나 많은 항목을 알고있는 경우

1) 설정하면 every을 사용할 수 있습니다. 다음 그래프 데이터 포인트 0 2, 3 별도로 5는 위에서 제시 한 데이터 스타일 (첫 번째 데이터 포인트의 gnuplot에서 제로) :

데이터 블록은 편리 빈 의해 분리
plot "data" u 2:3 every ::0::2 title "First block", \ 
"data" u 2:3 every ::3::5 title "Second block" 

경우 라인이 오히려 데이터 포인트보다, 데이터 블록 단위를 사용하여 수행 할 수 있습니다 :

# Data separated by empty lines: 
1 7 100 
1 15 200 
1 31 300 

2 7 150 
2 15 300 
2 31 400 

음모와 위 :

plot "data" u 2:3 every :::0::0 title "First block", \ 
"data" u 2:3 every :::1::1 title "Second block" 

2) 각각의 얼마나 많은 항목을 알 수없는 경우 타입 플롯을 사용할 수 있습니다. 조건부 플롯을 사용할 수 있습니다. gnuplot은 컬럼 1이 1이면 1을, 그렇지 않으면 무시해야합니다 (두 번째 플롯에서는 동일하지만 그 경우 컬럼 1은 2와 동일해야 함).

plot "data" u 2:($1 == 1 ? $3 : 1/0) title "First block", \ 
"data" u 2:($1 == 2 ? $3 : 1/0) title "Second block" 

조건은 다음과 같이 구성된다 :

$1 == 1 ? ->이 열 1 일에 해당된다는 사실인가요?

$3 : 1/0

은 - 예, 다음의 gnuplot 의미 열 3, 다른 플롯 1/0을, 플롯 경우>

+0

이 자세한 답변을 주셔서 대단히 감사합니다 데이터 포인트 "무시". – PVitt