문제

3D 플롯에 점을 표시하고 직사각형이 아닌 데이터를 처리할 수 있는 메시를 만들고 싶습니다.좀 더 구체적으로 말하면 내 데이터는

데이터.dat

-1 0 0
-1 1 0
0 -1 0
0 0 0
0 1 0
1 -1 0
1 0 0

그리고 내 gnuplot 파일

플롯.plt

set dgrid3d 3,3
splot 'data.dat' w l
pause -1

안타깝게도 dgrid3d 내 데이터를 직사각형으로 만들고 직사각형 그리드(실제로는 정사각형 그리드)가 플롯되는 것 같습니다.내 데이터의 제한된 봉투를 표시하는 방법이 있습니까?이상적으로는 직교 볼록 껍질 내 포인트 세트 중.

도움이 되었습니까?

해결책

이와 같은 작업을 수행하는 데는 몇 가지 옵션이 있습니다. 불행히도 모두 사용자의 작업이 필요합니다.

먼저, 다음 사항에 유의하는 것이 중요합니다. gnuplot은 표면 플로팅을 위해 직사각형이 아닌 메시를 처리할 수 있습니다. (이 예에서는 직사각형 표면만 필요하더라도)표면 플로팅의 경우 데이터 파일은 다음과 같습니다(빈 레코드에 주의).

x11 y11 z11
x21 y21 z21
x31 y31 z31
...

x12 y12 z12
x22 y22 z22
x23 y23 z23
...

그런 다음 사각형을 형성합니다.이 경우 첫 번째 사변형은 점 (x11,y11),(x21,y21),(x12,y12),(x22,y22)로 구성됩니다.두 번째 사변형은 (x21,y21),(x31,y31),(x22,y22),(x23,y23) 등으로 구성됩니다.따라서 포인트 세트가 주어지면 모든 데이터 포인트를 보유할 "직사각형 메시"를 쉽게 만들 수 있습니다.간격이 균등하지는 않지만 전혀 문제가 되지 않습니다.이제 gnuplot이 점을 표시하지 않도록 점을 제거하는 방법을 알아내야 합니다.이것이 "트릭"입니다.데이터 파일에서 특정 문자열을 "누락된 데이터"로 표시할 수 있습니다(set datafile missing "string").이 경우 gnuplot은 해당 지점을 표시하지 않지만 표면 생성을 위해 누락된 데이터의 좌표를 계속 추적합니다.

따라서 결국 데이터 파일은 다음과 같습니다.

x11 y11 ?
x21 y21 ?
x31 y31 z31
...

x12 y12 ?
x22 y22 z22
x23 y23 z23
...

이를 플롯하는 스크립트는 다음과 같습니다.

set datafile missing '?'
set surf
set view map #Not sure about this...depends on the view you want
splot "mydata.dat" u 1:2:3 w lines

gnuplot이 "직교 볼록 선체"를 계산하도록 하려면 운이 좋지 않은 것 같습니다.

쉬운 방법

또한 게시한 Wikipedia 링크의 그림과 같이 2D 공간에서 단색 개체를 원하는 경우 이 문제가 훨씬 쉬워집니다.그리려는 객체의 꼭짓점만으로 데이터 파일을 생성할 수 있는 경우((x1,y1)이 (x2,y2)에 연결되고 (x3,y3)에 연결되는 순서로) 플롯할 수 있습니다. 해당 데이터 파일은 다음과 같습니다.

set fillstyle #However you want the object to appear
plot "datafile.dat" u 1:2 with filledcurves closed
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top