
Lavorando alla visualizzazione dei dati per l'articolo, è emersa la necessità di avere 4 assi con etichette positive su tutti.
Come per altri grafici dell'articolo, ho deciso di utilizzare gnuplot. Prima di tutto sono andato sul sito ufficiale, dove ci sono molti esempi. Sono stato molto contento quando ho trovato quello giusto (lavorerò un po' con la lima e sarà bello, ho pensato).

Ho velocemente copiato il codice e l'ho eseguito. Ho ricevuto un errore. Sto analizzando. Si è scoperto che avevo una versione obsoleta di gnuplot (Versione 5.0 patchlevel 3 ultima modifica 2016-02-21) e non può fare così.
Sapendo della flessibilità di gnuplot, ho iniziato a cercare nelle vastità del web e sono inciampato su diversi esempi pertinenti su stackoverflow ( e ) e github (). Questi sono stati il punto di partenza.
Successivamente, le mie manovre con i comandi hanno portato al seguente risultato:
0) Disabilitiamo
unset border
1) Creiamo 4 linee nulle — 2 principali e 2 aggiuntive:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Due parole sulle linee nulle in . Questa operazione consente di centrare gli assi nel disegno. Le aggiuntive sono necessarie per visualizzare le tacche positive.
2) Configuriamo la visualizzazione delle tacche sugli assi:
max = 1.5 # Per flessibilità
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
Ci sono un po' più di impostazioni riguardo le tacche sugli assi.
axis — dove si troveranno le tacche, sull'asse o (border — al confine).
Per l'asse x, che va verso destra 0,.5,max. Il primo numero è l'inizio del conteggio, il secondo è il passo, il terzo è la fine del conteggio. Per il primo da 0, ma per gli altri da 0.5, in modo che gli zeri non disturbino all'inizio delle coordinate.


Miscelazione degli zeri nel centro delle coordinate.
Tutti gli intervalli *tics sono configurati come 0,.5,max
Senza offset 0.35 per xtics
Configurazione scale 0.5,0.25 mirror aggiunge tacche all'asse. Se si gioca con i numeri, cambierà la loro dimensione.
Introduco anche le variabili max, min, con cui gestisco i limiti degli assi del grafico.
Ulteriori informazioni sulla configurazione delle tacche possono essere trovate nella documentazione nella sezione .
3) Configuriamo gli intervalli degli assi:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Va notato che 2 assi iniziano il conteggio da min in aumento e 2 assi — da max in diminuzione.
Ulteriori informazioni nella sezione .
4) Assegniamo nomi agli assi e li posizioniamo in modo elegante:
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) Formiamo i dati di input
Per ogni grafico sono riservate 2 colonne. Il numero di riga corrisponde al numero dell'asse, la quinta riga serve a chiudere il contorno. La colonna dispari rappresenta la coordinata x, la pari — y. Poiché tutti i punti si trovano sugli assi, una delle coppie (x, y) è sempre uguale a zero.
Nonostante tutte e 4 le assi siano positive, alcuni dati vengono spostati artificialmente nella metà negativa, poiché si trovano sugli assi principali x e 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 #Duplicato del primo punto
Risultato

Codice completo
#!/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
Fonte: habr.com
