
Pri práci na vizualizácii údajov pre článok vznikla potreba mať 4 osi s pozitívnymi značkami na všetkých.
Ako aj pri iných grafoch článku, rozhodol som sa použiť gnuplot. Najprv som sa pozrel na oficiálnu stránku, kde je množstvo príkladov. Veľmi ma potešilo, keď som objavil potrebný (pár dní sa s tým pohrám a bude to pekné, pomyslel som si).

Rýchlo som skopíroval kód, spustil. Dostal som chybu. Skúmal som. Ukázalo sa, že mám starší gnuplot (Verzia 5.0 patchlevel 3 naposledy upravená 2016-02-21) a ten to takto nezvláda.
S vedomosťou o flexibilite gnuplotu, som začal prehľadávať internet a narazil na niekoľko vhodných príkladov na stackoverflow ( a ) a github (). Stali sa východiskovým bodom.
Ďalej, moje manipulácie s príkazmi viedli k nasledujúcemu:
0) Vypneme
unset border
1) Vytvoríme 4 nulové osi — 2 hlavné a 2 ďalšie:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Pár slov o nulových osiach v . Tento krok prináša osy do centra obrázku. A ďalšie sú potrebné na zobrazovanie pozitívnych tikov.
2) Prispôsobujeme zobrazenie tikov na osiach:
max = 1.5 # Pre flexibilitu
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
Pri tikoch na osiach je trocha viac nastavení.
axis — kde budú tiky, na osi alebo (border — na hranici).
Pre os x, ktorá ide vpravo 0,.5,max. Prvé číslo — začiatok merania, druhé — krok, tretie — koniec merania. Pre prvú od 0, a pre ostatné od 0.5, aby sa nuly neprekážali na začiatku súradnic.


Miešanie núl v strede súradníc.
Všetky intervaly *tics sú nastavené ako 0,.5,max
Bez offset 0.35 pre xtics
Nastavenie scale 0.5,0.25 mirror pridáva značky na os. Ak sa pohrajete s číslami, tak sa zmení ich veľkosť.
Tiež zadávam premenné max, min, pomocou ktorých ovládam hranice osí grafu.
Ďalšie informácie o nastavení tikov možno nájsť v dokumentácii v sekcii .
3) Prispôsobujeme rozsahy osí:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Tu stojí za zmienku, že 2 osi začínajú od min na zvyšovanie a 2 osi — s max na znižovanie.
Ďalšie informácie v sekcii .
4) Osám priradíme názvy a pekne ich umiestnime:
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) Pripravujeme vstupné údaje
Na každý graf je vyhradených 2 stĺpce. Číslo riadku — číslo osi, piata línia, aby sa uzavrel obrys. Nepárny stĺpec — súradnica x, párny — y. Keďže všetky body sú umiestnené na osiach, tak z páru (x, y) jedna je vždy rovná nule.
Hoci všetky 4 osi sú kladné, niektoré údaje sú umelo presunuté na zápornú polovicu, pretože sa nachádzajú na hlavných osiach x a 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 #Duplikát prvej bodu
Výsledok

Úplný kód
#!/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
Zdroj: habr.com
