2013-01-19 3 views
3

여러 개의 열이있는 데이터 파일이 있습니다. 처음 두 개는 위치를 나타내고 나머지는 다른 속성 (예 :이 지점에서 보낸 항목 수)을 나타냅니다. 예 :gnuplot에서 여러 변수를 사용하여 플로팅

1 1 1 57.11 
2 1 2 62.40 
3 4 1 31.92 

는 내가 뭘 원하는 점 위치에 플롯이지만, 다른 열에서 사용하는 값은 포인트 형과 (예를 들어)의 크기를 변경할 수 있습니다. 그러나 음모에서 열을 참조하는 방법을 찾을 수없는 것 같습니다. 나는 "변수"의 사용법을 알고 있지만 여러 변수를 사용하는 방법을 찾을 수 없습니다.

내가 원하는 것은 다음과 같은 것입니다 :

plot "mydata" using 1:2 notitle with points pt ($3) ps ($4/10) 

그래서 PT 및 PS 각각 세 번째와 네 번째 열에서 가져온 각 지점의 값을 사용합니다.

gnuplot에서도 가능합니까? 어떤 종류의 해결 방법이 있습니까?

답변

4

당신은 같은 것을 할 키워드 variable을 사용할 수 있어야합니다 :

plot 'datafile' using 1:2:3:4 w points ps variable lc variable 

또는 가능성이 팔레트에 값 매핑 :

plot 'datafile' using 1:2:3:4 w points ps variable lc palette 

키워드 변수 및/또는 팔레트 원인 gnuplot을 사용하면 파일에서 속성을 읽을 수 있으며 둘 다 using을 통해 추가 열을 읽어야합니다. 사용에 물론 모든 일반적인 물건 적용 - 당신은 데이터 등으로 변환을 적용 할 수 있습니다

plot 'datafile' using 1:2:3:($4+32.) w points ps variable lc palette 

내가 3 열이 포인트 사이즈 할 것인지 내 머리 위로 떨어져 기억하지 않는다 또는 여기 색깔, 그리고 지금은 그것을 알아낼 주위 놀러 시간이 없어. 실험을하고 의견을 게시 할 수 있습니다. 시간이 있고 업데이트를 추가하면 다시 돌아올 것입니다.


다른 속성의 일부 (예를 들어 pointtype는) 아주 쉽게 variable을 사용하여 변경할 수 없습니다. 가장 쉬운 방법은 gnuplot 삼항 연산자로 필터를 사용하는 것입니다.

첫째, 데이터 파일의 1 열에서 데이터를 기반으로 pointtype을 반환하는 함수 쓰기 : 여기

my_point_type(x) = x 

나는 간단한 신원 기능을 사용을하지만, 아무것도 될 수 있습니다. 지금, 당신은 pointtypes 돌이 당신은 각각의 플롯을 (여기 1-10) 할 수 있습니다

plot [for PT=1:10] 'datafile' u 1:((my_point_type($3) == PT) ? $2:NaN) with points pt PT 

이 pointtype 정보 열이 3 열이 있다고 가정하고, 두 번째 열은 위치 정보를 보유하고 있음 . 위의 내용과 결합 할 수도 있습니다.

+0

"변수"를 여러 번 사용해 보았지만 매개 변수 중 일부만 허용합니다.예를 들어 ps는 변수에 만족하지만 pt는 다른 매개 변수와 함께 사용하면 같은 오류가 발생합니다 :'undefined variable : variable' 그 라인을 따라, ive는 어딘가에있는 예에서 발견 된 바와 같이, 나는 어제 밤에 예제를 발견했지만, 오늘 아침 다시 찾을 수 없었다) 1 : 2 : (myvar1 = $ 3) :(myvar2 = $ 4) 포인트 pt myvar1 ps myvar2'를 사용하여'notvle'을 사용하여'plot "datafile 정의되지 않은 동일한 변수 오류. – OverlordAlex

+0

@OverlordAlex - 아, 죄송합니다.'pt'를 보았고 색깔을 바꾸려고한다고 생각했습니다. 아니, 그런 점 유형을 변경할 방법이 없습니다. 유일한 해결책은 다양한 포인트 유형으로 데이터를 필터링하는 것입니다. 시간이되면 업데이트 할게 ... – mgilson

+0

@OverlordAlex - 업데이트했습니다. 어쩌면 당신은 '... 1 : 2 사용 : (myvar = $ 3, $ 3) :(myvar = $ 4, $ 4) ...'나는 그것이 잘 작동하는지 모르겠습니다. – mgilson

관련 문제