Gnuplot 5.0. Spiderplot nelja telje peale oma kätega

Gnuplot 5.0. Spiderplot nelja telje peale oma kätega
Andmete visualiseerimise kallal töötades tekkis vajadus, et oleks 4 telge, kus kõigil on positiivsed tähised.

Nagu ka teiste graafikute puhul artiklis, otsustasin kasutada gnuplot. Esmalt vaatasin ametlikku lehte, kus on palju näiteid. Olin väga õnnelik, kui leidsin vajaliku näide (natuke lihvin ja saab ilus olema, mõtlesin ma).
Gnuplot 5.0. Spiderplot nelja telje peale oma kätega
Kopeerisin kiirelt koodi, käivitan. Saadud viga. Uurin välja. Selgus, et mul on vana gnuplot (Version 5.0 patchlevel 3 viimati muudetud 2016-02-21) ja ta ei oska nii.

Teades gnuplot'i paindlikkust, hakkasin otsima ülemaailmsest veebist ja sattusin mitmele sobivale näiteks stackoverflow's (Double x-axis on a spider plot with Gnuplot ja Kuidas luua spider plot Gnuplot'is?) ja github'is (gnuplot-radarchart). Need said alguspunktiks.

Jätkates, mu manipuleerimised käskudega viisid järgmise tulemuseni:

0) Lülitage välja piirid

unset border

1) Loome 4 nulljoont — 2 peamist ja 2 täiendavat:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Mõned sõnad nulljoontest dokumentatsioon. See operatsioon võimaldab teljed viia kujundi keskele. Asetäiendavad on vajalikud, et kuvada positiivseid tikke.

2) Seame tikkide kuvamise telgedel:

max = 1.5 # Paindlikkuse jaoks
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            

Tikkide seadistamiste jaoks on natuke rohkem seadistusi.
axis — kus tikkide asukoht olla, teljel või (border — piiril).
Telje x, mis suundub paremale 0,.5,max. Esimene number — alguspunkt, teine — samm, kolmas — lõpp-punkt. Esimese jaoks alates 0, aga teiste jaoks alates 0.5, et nullid ei segaks koordinaatide alguses.

Gnuplot 5.0. Spiderplot nelja telje peale oma kätega
Gnuplot 5.0. Spiderplot nelja telje peale oma kätega

Nullide segamine koordinaatide keskmes.
Kõik intervallid *tics on seadistatud nagu 0,.5,max
Ilma offset 0.35 jaoks xtics

Seadistamine scale 0.5,0.25 mirror lisab tikud teljele. Kui numbritega mängida, siis muutub nende suurus.
Samuti sisestan muutujad max, min, millega juhin graafiku telgede piire.
Lisainfot tikkide seadistamise kohta leiate dokumentatsioonist jaotisest Xtics.

3) Seame telgede vahemikud:

set xrange  [ min : max ] 
set yrange  [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]

Siin tuleb märkida, et 2 telge algavad min kasvu suunas ja 2 telge — kahanevas suunas. max Lisainformatsioon jaotises
Xrange Xrange.

4) Anname telgedele nimed ja paigutame need kenasti:

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) Koostame sisendid
Iga graafiku jaoks on eraldatud 2 veergu. Rea number — telje number, viies rida, et sulgeda kontuur. Paaritu veerg — koordinaat x, paaris — y. Kuna kõik punktid asuvad telgedel, siis paarist (x, y) on üks alati null.
Kuigi kõik 4 telge on positiivsed, liigutatakse osa andmeid kunstlikult negatiivsele poolele, kuna need asuvad põhitelgedel x ja 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 #Esimese punkti duplikaat

Tulemus
Gnuplot 5.0. Spiderplot nelja telje peale oma kätega
Täielik kood

#!/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

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster