
Durante la realizzazione della 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. Per prima cosa, sono andato sul sito ufficiale, dove ci sono molti esempi. Sono stato molto contento quando ho trovato quello che cercavo (dopo qualche ritocco, sarà bello, ho pensato).

Ho copiato rapidamente il codice, lo eseguo. Ricevo un errore. Analizzo. Si è scoperto che ho una versione vecchia di gnuplot (Versione 5.0 patchlevel 3 ultima modifica 2016-02-21) e non supporta questa funzionalità.
Sapendo della flessibilità di gnuplot, ho iniziato a cercare nel vasto oceano del web e ho trovato alcuni esempi utili su stackoverflow ( e ) e github (). Sono stati un punto di partenza.
Successivamente, le mie manovre con i comandi hanno portato a quanto segue:
0) Disabiliamo
unset border
1) Creiamo 4 linee zero — 2 principali e 2 aggiuntive:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Due parole sulle linee zero in . Questa operazione consente di centrare gli assi nel disegno. Le linee aggiuntive sono necessarie per visualizzare le etichette positive.
2) Configuriamo la visualizzazione delle etichette 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
Con le tacche sugli assi c'è un po' più di impostazioni.
asse — dove si trovano le tacche, sull'asse o (border — al confine).
Per l'asse x, che si estende a destra 0,.5,max. Il primo numero è l'inizio della misurazione, il secondo è il passo, il terzo è la fine della misurazione. Per il primo da 0, e per gli altri da 0.5, in modo che gli zeri non si sovrappongano all'origine.


Miscelazione degli zeri al centro del piano cartesiano.
Tutti gli intervalli *tics sono impostati come 0,.5,max
Senza offset 0.35 per xtics
Impostazione scale 0.5,0.25 mirror aggiunge tacche all'asse. Giocando con i numeri, si può cambiare la loro dimensione.
Introduco anche le variabili max, min, con le quali gestisco i limiti degli assi del grafico.
Ulteriori informazioni sulla configurazione delle tacche sono disponibili 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 ]
Qui è importante notare che 2 assi iniziano la misurazione da min in aumento e 2 assi — da max riducendo.
Ulteriori informazioni nella sezione .
4) Assegnamo nomi agli assi e li disponiamo 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 ingresso
Ogni grafico utilizza 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, in ogni coppia (x, y) una sarà sempre zero.
Nonostante tutti e 4 gli assi siano positivi, alcuni dati vengono artificialmente spostati 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
