Amikor egy cikk adatmegjelenítésén dolgoztunk, szükségessé vált, hogy 4 tengely legyen pozitív címkékkel.
A cikkben szereplő többi grafikonhoz hasonlóan a használata mellett döntöttem gnuplot. Először is megnéztem a hivatalos honlapot, ahol sok példa van. Nagyon örültem, amikor megtaláltam a megfelelőt
Gyorsan kimásoltam a kódot és lefuttattam. Hibaüzenetet kapok. kitalálom. Kiderült, hogy van egy régi gnuplotom (Version 5.0 patchlevel 3 last modified 2016-02-21
), és ezt nem tudja megtenni.
A gnuplot rugalmasságának ismeretében elkezdtem böngészni a világhálón, és több alkalmas példára bukkantam a stackoverflow-ról (
Továbbá a parancsokkal végzett manipulációim a következőkhöz vezettek:
0) Letiltás
unset border
1) Hozzon létre 4 nulla sort - 2 fő és 2 további:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Néhány szó a nulla sorokról
2) Állítsa be a kullancsok megjelenítését a tengelyeken:
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
A tengelyeken lévő kullancsokkal egy kicsit több beállítás van.
axis
- hol fognak elhelyezkedni a kullancsok, a tengelyen vagy (határon - a határon).
A tengelyhez x
, ami jobbra megy 0,.5,max
. Az első szám a visszaszámlálás kezdete, a második a lépés, a harmadik a visszaszámlálás vége. Az első től 0
, a többi pedig től 0.5
, hogy a nullák ne zavarják az origót.
Nullák keverése a koordináta középpontjában.
Minden intervallum *tics
ként konfigurálva 0,.5,max
Nélkül offset 0.35
a xtics
beállítás scale 0.5,0.25 mirror
bevágásokat ad a tengelyhez. Ha a számokkal játszik, a méretük megváltozik.
Változókat is beírok max, min
, melynek segítségével szabályozom a gráf tengelyeinek határait.
A kullancsok beállításával kapcsolatos további információk a részben található dokumentációban találhatók
3) Állítsa be a tengelytartományokat:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Itt kell megjegyezni, hogy a 2 tengely innen indul min
nagyításhoz és 2 tengellyel - a max
csökkenteni.
További információk a részben
4) Adjon nevet a tengelyeknek, és helyezze el őket szépen:
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) A bemeneti adatok kialakítása
Minden grafikonnak 2 oszlopa van. Sorszám – tengelyszám, ötödik sor a hurok bezárásához. Páratlan oszlop – koordináta x
, még - y
. Annak a ténynek köszönhetően, hogy minden pont a tengelyeken található, akkor a párból (x, y)
az egy mindig nulla.
Annak ellenére, hogy mind a 4 tengely pozitív, bizonyos adatok mesterségesen átkerülnek a negatív felére, mivel a fő tengelyeken találhatók 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 #Дубликат первой точки
Eredmény
Teljes 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
Forrás: will.com