gnuplot을 사용하여 pm3d 맵에 단조로운 데이터가 아닌 2D 곡선을 추가하는 방법
splot을 사용하고 pm3d 맵에 2D 곡선을 추가하고 싶습니다. 그래서 거의 작동하는이 코드를 사용합니다.
2D 라인에 문제가 있습니다.
splot 'gnu8' u 2:1:3 w pm3d notitle,\
'' u 2:(-$1):3 w pm3d notitle,\ 'allaxi80.005.dat' u 2:1:0 w l lw 3 lc "black" notitle,\ '' u 2:(-$1):0 w l lw 3 lc "black" notitle
이것은 내 2D 라인입니다. 플롯을 사용할 때 아무런 문제가 없습니다.
gnuplot> plot 'allaxi80.005.dat' u 2:1 w l, '' u 2:(-$1) w l

그리고 이제 나는 splot과 같은 것을 원하지만 보시다시피 다른 곡선을 얻습니다.
gnuplot> splot 'allaxi80.005.dat' u 2:1:0 w l lw 3 lc "black" notitle,\
> '' u 2:(-$1):0 w l lw 3 lc "black" notitle

그런 다음 내 데이터가 2D라는 것을 알고 뷰 맵을 설정 해제합니다.
unset view
그리고 나는 이것을 얻는다 :

나는 사용한다 :
G N U P L O T
Version 5.2 patchlevel 2
내 데이터 파일의 일부 :
0 32.0109
0.3125 32.0379
0.3125 32.0376
0.625 32.119
0.625 32.1221
0.78125 32.1835
0.78125 32.1837
0.788924 32.1875
0.790724 32.1875
0.9375 32.2602
0.9375 32.26
0.947399 32.2656
0.945217 32.2656
1.01562 32.3064
1.01562 32.3066
1.07344 32.3438
1.07505 32.3438
1.09375 32.3552
1.09375 32.3554
1.25 32.4697
1.25 32.4708
1.28557 32.5
1.287 32.5
1.40625 32.6034
1.40625 32.6065
1.45767 32.6562
1.46141 32.6562
1.5625 32.7658
1.5625 32.7667
1.60196 32.8125
1.60243 32.8125
1.64062 32.8601
1.64062 32.8613
1.66339 32.8906
1.66505 32.8906
1.71875 32.9636
1.71875 32.9672
1.71984 32.9688
1.7216 32.9688
1.77482 33.0469
1.77503 33.0469
1.79688 33.0805
1.79688 33.0813
1.82527 33.125
1.82647 33.125
1.875 33.2065
1.875 33.2084
1.91838 33.2812
1.91899 33.2812
2.00165 33.4375
2.00201 33.4375
2.03125 33.5005
2.03125 33.5023
2.07369 33.5938
2.07384 33.5938
2.13673 33.75
2.13802 33.75
2.1875 33.9013
2.1875 33.9033
2.18852 33.9062
2.18935 33.9062
2.23597 34.0625
2.23618 34.0625
2.27742 34.2188
2.2774 34.2188
2.31287 34.375
2.3128 34.375
2.34271 34.5312
2.3428 34.5312
2.34375 34.5373
2.34375 34.5384
2.36727 34.6875
2.36713 34.6875
2.38697 34.8438
2.38683 34.8438
2.40246 35
2.40242 35
2.41423 35.1562
2.41422 35.1562
2.42229 35.3125
2.42226 35.3125
2.42668 35.4688
2.42665 35.4688
2.42753 35.625
2.42754 35.625
2.42493 35.7812
2.42491 35.7812
2.41881 35.9375
내 전체 파일 :
https://github.com/Suntoryy/gnuplot/blob/master/allaxi80.005.dat
답변
실제로 데이터는 항상 도움이됩니다. 데이터를 플로팅 한 후 무엇이 잘못되었는지 확인했기 때문입니다. 코드를 사용하면 의사 열 0을 z 좌표로 사용하며 기본적으로 0에서 시작하는 줄 번호입니다. 확인하십시오 help pseudocolumns
.
코드는 다음과 같이 읽어야합니다. 정신 0
에서 (0)
의 상수 값 수단 0
(안 라인 수).
splot 'allaxi80.005.dat' u 2:1:(0) w l lw 3 lc "black" notitle, \
'' u 2:(-$1):(0) w l lw 3 lc "black" notitle
추가 : ( 전체 데이터를 더 자세히 살펴본 후 )
다음은 문제에 대한 최소한의 예입니다.
- 데이터가 열 2 (여기서 열 1)에서 단조롭지 않습니다.
plot
두 개의 데이터 라인마다 빈 라인 이 있기 때문에 이것을 볼 수 없습니다 . 따라서 선이 연결되지 않습니다. 그러나splot
하나의 빈 줄이 있으면 데이터 포인트를 연결합니다.
다음과 같은 옵션이 있습니다.
- x를 나타내는 열로 데이터 정렬
또는
- 하나의 빈 줄 대신 두 개의 빈 줄을 추가하면
splot
.
코드 : (편집 : 데이터와 더 유사한 데이터)
### plot and splot with non monotonic data
reset session
$Data0 <<EOD
0 0
2 1
6.3 2.3
7 0
1.1 0.9
4 2
3.9 2.3
6 2
EOD
$Data1 <<EOD 0 0 2 1 6.3 2.3 7 0 1.1 0.9 4 2 3.9 2.3 6 2 EOD $Data2 <<EOD
0 0
2 1
6.3 2.3
7 0
1.1 0.9
4 2
3.9 2.3
6 2
EOD
set offsets 1,1,1,1
set multiplot layout 2,3
plot $Data0 u 1:2 w lp pt 7 ti "0 empty lines" plot $Data1 u 1:2 w lp pt 7 ti "1 empty lines"
plot $Data2 u 1:2 w lp pt 7 ti "2 empty lines" splot $Data0 u 1:2:(0) w lp pt 7 ti "0 empty lines"
splot $Data1 u 1:2:(0) w lp pt 7 ti "1 empty lines" splot $Data2 u 1:2:(0) w lp pt 7 ti "2 empty lines"
unset multiplot
### end of code
결과:

gnuplot에서 첫 번째 열 함수를 두 번째 열로 정렬하려면 다음을 수행하십시오.
splot '< sort -u -k1,1 file.dat | sort -k2,2'