
Në punën me vizatimin e të dhënave për artikullin, kishte nevojë për 4 akse me etiketa pozitive në të gjitha.
Si për grafiket e tjera të artikullit, vendosa të përdor gnuplot. E para gjë që bëra ishte të shikoja në sitin zyrtar, ku kishte shumë shembuj. Më gëzoi shumë kur zbulova të nevojshmin (do të punoj pak me files dhe do të duket bukur, mendova unë).

E kopjova shpejt kodin, e nisa. Mora një gabim. Po e shqyrtoj. Doli që kam një gnuplot të vjetër (Version 5.0 patchlevel 3 i modifikuar për herë të fundit më 2016-02-21) dhe ai nuk e di atë.
Duke ditur për fleksibilitetin e gnuplot, fillova të kërkoj në hapësirën e internetit dhe u ndesha me disa shembuj të përshtatshëm në stackoverflow ( dhe ) dhe github (). Ato u bënë pika e nisjes.
Më pas, manipulimet e mia me komandat çuan në këtë pasojë:
0) Shkëputim
unset border
1) Krijojmë 4 linja zero - 2 të rëndësishme dhe 2 të tjera:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Pak fjalë mbi linjat zero në . Ky operacion lejon që akset të shkojnë në qendër të vizatimit. Ato shtesat janë të nevojshme për të shfaqur tikut pozitive.
2) Rregullojmë shfaqjen e tikeve në akse:
max = 1.5 # Për fleksibilitet
min = -max
set xtics axis 0,.5,max in scale 0.5,0.25 mirror norotate autojustify offset 0.35
set ytics axis .5,.5,max in scale 0.5,0.25 mirror norotate autojustify
set x2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate autojustify
set y2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate autojustify
Me tiket në akse, ka pak më shumë rregullime.
axis - ku do të jenë tiket, në aks ose (border - në kufi).
Për aksin x, i cili shkon në të djathtë 0,.5,max. Numri i parë - fillimi i numërimit, i dyti - hapi, i tretë - fundi i numërimit. Për të parin nga 0, dhe për të tjerat nga 0.5, në mënyrë që zero të mos pengohet në fillim të koordinatave.


Përzierja e zeros në qendër të koordinatave.
Të gjithë intervalet *tics janë rregulluar si 0,.5,max
Pa offset 0.35 për xtics
Configuration scale 0.5,0.25 mirror shton shenjat në aks. Nëse luani me numrat, do të ndryshojë madhësia e tyre.
Gjithashtu, po futem variablat max, min, me të cilat kontrolloj kufijtë e akseve të grafikut.
Informacione të mëtejshme rreth rregullimit të tikeve mund të gjenden në dokumentacion në seksionin .
3) Rregullojmë gamën e akseve:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Këtu duhet të theksohet se 2 akse fillojnë numërimin nga min në rritje dhe 2 akse - nga maks në zvogëlim.
Informacione të mëtejshme në seksionin .
4) Jepem emrat e akseve dhe i vendosim në mënyrë të bukur:
vendos etiketën "H_1" në 0, maksimumi offset qendra karakter 2, 0
vendos etiketën "H_2" në maksimum+0.1, 0 offset qendra karakter -1, 1
vendos etiketën "H_3" në 0, minimumi offset qendra karakter -2, 0
vendos etiketën "H_4" në minimum, 0 offset qendra karakter 0, 1
5) Formulojmë të dhënat hyrëse
Për çdo grafik janë ndarë 2 kolona. Numri i rreshtit — numri i aksit, rreshti i pestë, për të lidhur konturin. Kolona çifti — koordinata x, kolona tekën — y. Duke qenë se të gjitha pikat ndodhen në akse, atëherë nga çifti (x, y) njëra gjithmonë është e barabartë me zero.
Pavarësisht se të gjitha 4 akset janë pozitive, disa të dhëna lëvizen artificialisht në gjysmën negative, sepse ndodhen në akset kryesore x dhe y.
0 1 0 1.21
1 0 1.21 0
0 -1 0 -1.06
-1 0 -1.19 0
0 1 0 1.21 #Dublikati i pikës së parë
Rezultati

Kodi i plotë
#!/usr/bin/gnuplot -persist
#файл в кодировке cp1251 чтоб русские буквы отображались в eps
set encoding cp1251
set terminal postscript eps enhanced monochrome size 5cm,5cm
set output "./img/eps/fig2.eps"
unset border
set key at -2, 1.5 font 'LiberationSerif, 23'
set key left top samplen 4.5
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
max = 1.5
min = -max
set xtics axis 0,.5,max in scale 0.5,0.25 mirror norotate autojustify offset 0.35 font 'LiberationSerif, 20
set ytics axis .5,.5,max in scale 0.5,0.25 mirror norotate autojustify font 'LiberationSerif, 20
set x2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate autojustify font 'LiberationSerif, 20
set y2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate autojustify font 'LiberationSerif, 20
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
set label "H_1" at 0, max center offset char 2, 0 font 'LiberationSerif, 23'
set label "H_2" at max+0.1, 0 center offset char -1, 1 font 'LiberationSerif, 23'
set label "H_3" at 0, min center offset char -2, 0 font 'LiberationSerif, 23'
set label "H_4" at min, 0 center offset char 0, 1 font 'LiberationSerif, 23'
set style line 1 linetype 1 pointtype 7 linewidth 3 linecolor black
set style line 2 linetype 2 pointtype 7 linewidth 3 linecolor black
plot 'data.csv' using 1:2 title "1" w lp ls 1 ,
'data.csv' using 3:4 title "2" w lp ls 2
Burimi: habr.com
