
StrÄdÄjot pie datu vizualizÄcijas rakstam, radÄs nepiecieÅ”amÄ«ba pÄc 4 asÄ«m ar pozitÄ«vÄm atzÄ«mÄm visÄm.
KÄ arÄ« citu raksta grafiku gadÄ«jumÄ es nolÄmu izmantot gnuplot. Pirmais, ko izdarÄ«ju, bija doties uz oficiÄlo vietni, kur ir daudz piemÄru. Ä»oti priecÄjos, kad atradu vajadzÄ«go (nedaudz pastrÄdÄÅ”u ar failu un bÅ«s skaisti, nodomÄju).

Ätri nokopÄju kodu un palaidu. Ieguvu kļūdu. IzpÄtÄ«ju. IzrÄdÄ«jÄs, ka man ir vecs gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) un viÅÅ” tÄ neprot.
Zinot par gnuplot elastÄ«bu, sÄku meklÄt tÄ«klÄ un uzdÅ«ros vairÄkiem piemÄriem stackoverflow ( un ) un github (). Tie kļuva par sÄkumpunktu.
TurpmÄk manas darbÄ«bas ar komandu noveda pie sekojoÅ”Ä:
0) AtspÄjojam
unset border
1) Izveidojam 4 nulles lÄ«nijas ā 2 galvenÄs un 2 papildu:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Daži vÄrdi par nulles lÄ«nijÄm . Å Ä« operÄcija ļauj samazinÄt asis uz attÄla centru. Papildu nepiecieÅ”amas, lai attÄlotu pozitÄ«vos tikus.
2) Iestata tiku attÄloÅ”anu uz asÄ«m:
max = 1.5 # Elastībai
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
Ar tikumiem uz asÄ«m iestatÄ«jumu ir nedaudz vairÄk.
axis ā kur bÅ«s tiku izkÄrtojums, uz ass vai (border ā uz robežas).
AttiecÄ«bÄ uz asi x, kas iet pa labi 0,.5,max. Pirmais skaitlis ā sÄkuma punkts, otrais ā solis, treÅ”ais ā beigu punkts. Pirmajai no 0, bet pÄrÄjÄm no 0.5, lai nulles netraucÄtu koordinÄtu sÄkumÄ.


Nulles sajaukÅ”ana koordinÄtu centrÄ.
Visi intervÄli *tics iestatÄ«ti kÄ 0,.5,max
Bez offset 0.35 lai xtics
IestatÄ«jumi scale 0.5,0.25 mirror pievieno atzÄ«mes uz asÄ«m. Ja spÄlÄjas ar skaitļiem, tad mainÄ«sies to izmÄrs.
TÄpat ievadu mainÄ«gos max, min, ar kuriem kontrolÄju grafika asu robežas.
Papildu informÄciju par tiku iestatīŔanu var atrast dokumentÄcijÄ sadaÄ¼Ä .
3) Iestata asu diapazonus:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Å eit jÄpiezÄ«mÄ, ka 2 ass sÄk skaitīŔanu no min palielinÄÅ”anÄs un 2 ass ā no max samazinÄÅ”anÄs.
Papildu informÄcija sadaÄ¼Ä .
4) PieŔķiram asÄ«m nosaukumus un skaisti tÄs novietojam:
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) Veidojam iegūto datu ievadi
Katram grafam ir pieŔķirti 2 slÄÅi. Rindas numurs ā ass numurs, piektÄ rinda, lai aizvÄrtu kontÅ«ru. NepÄra kolonna ā koordinÄta x, pÄra ā y. Å
emot vÄrÄ, ka visi punkti ir izvietoti uz asÄ«m, no pÄra (x, y) viena vienmÄr ir vienÄda ar nulli.
Neskatoties uz to, ka visas 4 ass ir pozitÄ«vas, daži dati mÄkslÄ«gi tiek pÄrvietoti uz negatÄ«vo pusi, jo tie atrodas uz galvenajÄm asinÄ«m x un 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 #Pirma punkta duplikÄts
RezultÄts

Pilns kods
#!/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
Avots: habr.com
