
Andmete visualiseerimise kallal töötades tekkis vajadus, et oleks 4 telge, kus kõigil on positiivsed tähised.
Nagu ka teiste graafikute puhul artiklis, otsustasin kasutada gnuplot. Esmalt vaatasin ametlikku lehte, kus on palju näiteid. Olin väga õnnelik, kui leidsin vajaliku (natuke lihvin ja saab ilus olema, mõtlesin ma).

Kopeerisin kiirelt koodi, käivitan. Saadud viga. Uurin välja. Selgus, et mul on vana gnuplot (Version 5.0 patchlevel 3 viimati muudetud 2016-02-21) ja ta ei oska nii.
Teades gnuplot'i paindlikkust, hakkasin otsima ülemaailmsest veebist ja sattusin mitmele sobivale näiteks stackoverflow's ( ja ) ja github'is (). Need said alguspunktiks.
Jätkates, mu manipuleerimised käskudega viisid järgmise tulemuseni:
0) Lülitage 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 nulljoontest . See operatsioon võimaldab teljed viia kujundi keskele. Asetäiendavad on vajalikud, et kuvada positiivseid tikke.
2) Seame tikkide kuvamise telgedel:
max = 1.5 # Paindlikkuse jaoks
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
Tikkide seadistamiste jaoks on natuke rohkem seadistusi.
axis — kus tikkide asukoht olla, teljel või (border — piiril).
Telje x, mis suundub paremale 0,.5,max. Esimene number — alguspunkt, teine — samm, kolmas — lõpp-punkt. Esimese jaoks alates 0, aga teiste jaoks alates 0.5, et nullid ei segaks koordinaatide alguses.


Nullide segamine koordinaatide keskmes.
Kõik intervallid *tics on seadistatud nagu 0,.5,max
Ilma offset 0.35 jaoks xtics
Seadistamine scale 0.5,0.25 mirror lisab tikud teljele. Kui numbritega mängida, siis muutub nende suurus.
Samuti sisestan muutujad max, min, millega juhin graafiku telgede piire.
Lisainfot tikkide seadistamise kohta leiate dokumentatsioonist jaotisest .
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 algavad min kasvu suunas ja 2 telge — kahanevas suunas. max Lisainformatsioon jaotises
Xrange .
4) Anname telgedele nimed ja paigutame need kenasti:
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) Koostame sisendid
Iga graafiku jaoks on eraldatud 2 veergu. Rea number — telje number, viies rida, et sulgeda kontuur. Paaritu veerg — koordinaat x, paaris — y. Kuna kõik punktid asuvad telgedel, siis paarist (x, y) on üks alati null.
Kuigi kõik 4 telge on positiivsed, liigutatakse osa andmeid kunstlikult negatiivsele poolele, kuna 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
