
NÀr jag arbetade med datavisualisering för artikeln uppstod behovet av att ha 4 axlar med positiva etiketter pÄ alla.
Som med andra diagram i artikeln beslutade jag mig för att anvÀnda gnuplot. Först tog jag en titt pÄ den officiella webbplatsen dÀr det finns mÄnga exempel. Jag blev mycket glad nÀr jag hittade den nödvÀndiga (lite fint arbete hÀr och dÀr, tÀnkte jag).

Jag kopierade snabbt koden, körde den. Fick ett fel. Jag undersökte. Det visade sig att jag hade en gammal version av gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) och den kan inte göra sÄ.
Med vetskap om gnuplots flexibilitet började jag söka pÄ nÀtet och stötte pÄ nÄgra passande exempel pÄ stackoverflow ( och ) och github (). De blev min utgÄngspunkt.
DÀrefter ledde mina manipulationer med kommandon till följande:
0) StÀng av
unset border
1) Skapa 4 nollinjer - 2 huvudsakliga och 2 ytterligare:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
NÄgra ord om nollinjer i . Denna operation gör det möjligt att centrera axlarna i diagrammet. De ytterligare behövs för att visa positiva tickar.
2) StÀll in visning av tickarna pÄ axlarna:
max = 1.5 # För flexibilitet
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
Med tickarna pÄ axlarna Àr instÀllningarna lite fler.
axis â dĂ€r tickarna kommer att placeras, pĂ„ axeln eller (border â pĂ„ grĂ€nsen).
För axeln x, som gÄr Ät höger 0,.5,max. Det första talet Àr startpunkten, det andra Àr steget, det tredje Àr slutpunkten. För den första frÄn 0, och för de andra frÄn 0.5, sÄ att nollorna inte stör i origo.


Blandning av nollor i origo.
Alla intervall *tics Àr instÀllda som 0,.5,max
Utan offset 0.35 för xtics
InstÀllning scale 0.5,0.25 mirror lÀgger till markeringar pÄ axeln. Om man leker med siffrorna, kommer storleken pÄ dem att förÀndras.
Jag introducerar ocksÄ variablerna max, min, med hjÀlp av vilka jag styr grÀnserna för diagrammets axlar.
Ytterligare information om instÀllning av tickar kan hittas i dokumentationen i avsnittet .
3) StÀll in axlarnas intervall:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
HĂ€r bör man notera att 2 axlar börjar rĂ€kna frĂ„n min i ökande och 2 axlar â frĂ„n max i minskande.
Ytterligare information i avsnittet .
4) Vi namnger axlarna och placerar dem vackert:
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) Vi formar indata
Varje diagram fĂ„r tvĂ„ kolumner. Radnumret Ă€r axelnummret, den femte raden anvĂ€nds för att stĂ€nga konturen. Udda kolumn Ă€r koordinaten x, jĂ€mn â y. Eftersom alla punkter ligger pĂ„ axlarna, sĂ„ Ă€r en av paret (x, y) alltid lika med noll.
Trots att alla 4 axlar Àr positiva, flyttas vissa data artificiellt till den negativa halvan eftersom de ligger pÄ huvudaxlarna x och 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 #Dublett av första punkten
Resultat

FullstÀndig kod
#!/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
KĂ€lla: habr.com
