
Andmete visualiseerimise kallal töötades tekkis vajadus saada 4 telge, millel oleksid positiivsed tähised igal pool.
Nagu ka teiste artikli diagrammide puhul, otsustasin kasutada gnuplot. Esmalt vaatasin ametlikku veebilehte, kus on rohkelt näiteid. Olin väga rõõmus, kui leidsin vajaliku (pisut töötan failiga ja kõik saab ilusaks, mõtlesin ma).

Kiirelt kopeerisin koodi, käivitan. Saan vea. Uurin asja. Selgus, et mul on vana gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) ja ta ei oska nii.
Teades gnuplot'i paindlikkust, hakkasin surfama ülemaailmses veebi ja leidsin mitmeid sobivaid näiteid stackoverflow'ist ( ja ) ja github'ist (). Need said lähtepunktiks.
Jätkates, mu käsitlused käskudega viisid järgmiste tulemusteni:
0) Lülitame välja
unset border
1) Loome 4 nulljoont — 2 peamist ja 2 täiendavat:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Mõned sõnad nulljoonte kohta . See toiming võimaldab telgedel keskenduda joonisele. Täiendavad on vajalikud, et näidata positiivseid märke.
2) Seame telgedel tikke kuvamise:
max = 1.5 # Paindlikkuse nimel
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
Tiksid telgede seadete peal on veidi rohkem.
telg — kus tiksid asuvad, teljel või (piiril — piiril).
Telje jaoks x, mis suundub paremale 0,.5,max. Esimene number on alguspunkt, teine on samm, kolmas on lõpp-punkt. Esimese puhul 0, aga ülejäänute puhul 0.5, et nullid ei segaks koordinaatide alguses.


Nullide segamine koordinaatide keskosas.
Kõik intervallid *tiksid on seadistatud nagu 0,.5,max
Without offset 0.35 kuna xtics
Seadistamine scale 0.5,0.25 mirror lisab teljele marke. Kui numbritega mängida, siis muutub nende suurus.
Samuti tutvustan muutujaid max, min, millega juhin graafiku telgede piire.
Tiksude seadistamise kohta lisainformatsiooni leiate dokumentatsiooni jaotises .
3) Seame telgede vahemikud:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Siin tuleb märkida, et 2 telge alustavad arvestust min kasvamiseks ja 2 telge — max vähenemiseks.
Lisainfo jaotises .
4) Anname telgedele nimed ja asetame need ilusti paika:
set label "H_1" at 0, max center offset char 2, 0
set label "H_2" at max+0.1, 0 center offset char -1, 1
set label "H_3" at 0, min center offset char -2, 0
set label "H_4" at min, 0 center offset char 0, 1
5) Vormime sisendandmeid
Iga joonise jaoks on eraldatud 2 veergu. Rea number — telje number, viies rida, et kontuur sulgeda. Paaritu veerg — koordinaat x, paaris — y. Kuna kõik punktid asuvad telgedel, siis paarist (x, y) üks on alati null.
Hoolimata sellest, et kõik 4 telge on positiivsed, käigutakse mõned andmed kunstlikult negatiivse poolele, sest need asuvad põhitelgedel x ja 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 #Esimese punkti duplikaat
Tulemus

Täielik kood
#!/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
Allikas: habr.com
