gnuplot 5.0. Spiderplot 4 tengelyen csináld magad

gnuplot 5.0. Spiderplot 4 tengelyen csináld magad
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 példa (Kicsit dolgozom egy reszelővel, és szép lesz, gondoltam).
gnuplot 5.0. Spiderplot 4 tengelyen csináld magad
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 (Dupla x-tengely egy pókábrázoláson a Gnuplot segítségével и Hogyan készítsünk Spider-telket a Gnuplotban?) és github (gnuplot-radarchart). Ők lettek a kiindulópont.

Továbbá a parancsokkal végzett manipulációim a következőkhöz vezettek:

0) Letiltás a határok

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 dokumentáció. Ezzel a művelettel a tengelyeket a kép közepére hozhatja. És továbbiak szükségesek ahhoz, hogy pozitív kullancsok jelenjenek meg rajtuk.

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.

gnuplot 5.0. Spiderplot 4 tengelyen csináld magad
gnuplot 5.0. Spiderplot 4 tengelyen csináld magad

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 Xtics.

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 Xrange.

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
gnuplot 5.0. Spiderplot 4 tengelyen csináld magad
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

Hozzászólás