Quando si lavorava sulla visualizzazione dei dati per un articolo, si è reso necessario avere 4 assi con etichette positive su tutti.
Come con gli altri grafici nell'articolo, ho deciso di utilizzare gnplot. Prima di tutto ho guardato il sito ufficiale, dove ci sono molti esempi. Sono stato molto felice quando ho trovato quello giusto
Ho copiato rapidamente il codice e l'ho eseguito. Ottengo un errore. Lo sto capendo. Si è scoperto che ho un vecchio gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21
) e non può farlo.
Conoscendo la flessibilità di gnuplot, ho iniziato a frugare nel World Wide Web e mi sono imbattuto in diversi esempi adatti su StackOverflow (
Inoltre, le mie manipolazioni con i comandi hanno portato a quanto segue:
0) Disabilita
unset border
1) Crea 4 linee zero - 2 principali e 2 aggiuntive:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Qualche parola sulle righe zero in
2) Configurare la visualizzazione dei tick sugli assi:
max = 1.5 # Для гибкости
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 i segni di spunta sugli assi ci sono un po' più di impostazioni.
axis
- dove si troveranno le zecche, sull'asse o (bordo - sul confine).
Per asse x
, che va a destra 0,.5,max
. Il primo numero è l'inizio del conto alla rovescia, il secondo è il passo, il terzo è la fine del conto alla rovescia. Per il primo da 0
, e per il resto da 0.5
, in modo che gli zeri non interferiscano con l'origine.
Mischia gli zeri al centro delle coordinate.
Tutti gli intervalli *tics
configurato come 0,.5,max
Senza offset 0.35
per xtics
registrazione scale 0.5,0.25 mirror
aggiunge tacche all'asse. Se giochi con i numeri, la loro dimensione cambierà.
Inserisco anche le variabili max, min
, con l'aiuto del quale controllo i confini degli assi del grafico.
Ulteriori informazioni sull'impostazione dei tick sono disponibili nella documentazione nella sezione
3) Imposta gli intervalli degli assi:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Da notare qui che i 2 assi partono da min
per ingrandimento e 2 assi - con max
diminuire.
Ulteriori informazioni nella sezione
4) Dai nomi agli assi e posizionali magnificamente:
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) Formazione dei dati di input
Ogni grafico ha 2 colonne. Numero di riga - numero di asse, quinta riga per chiudere il ciclo. Colonna dispari - coordinata x
, Anche - y
. A causa del fatto che tutti i punti si trovano sugli assi, quindi dalla coppia (x, y)
uno è sempre zero.
Anche se tutti e 4 gli assi sono positivi, alcuni dati vengono spostati artificialmente nella metà negativa perché si trovano sugli assi principali x
и 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 #Дубликат первой точки
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