Gnuplot 5.0. Spiderplot 4 teljele oma kätega

Gnuplot 5.0. Spiderplot 4 teljele oma kätega
Andmete visualiseerimise kallal töötades tekkis vajadus saada 4 telge, millel oleksid positiivsed tähised igal pool.

Nagu ka teiste artikli diagrammide puhul, otsustasin kasutada gnuplot. Esmalt vaatasin ametlikku veebilehte, kus on rohkelt näiteid. Olin väga rõõmus, kui leidsin vajaliku an example (pisut töötan failiga ja kõik saab ilusaks, mõtlesin ma).
Gnuplot 5.0. Spiderplot 4 teljele oma kätega
Kiirelt kopeerisin koodi, käivitan. Saan vea. Uurin asja. Selgus, et mul on vana gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) ja ta ei oska nii.

Teades gnuplot'i paindlikkust, hakkasin surfama ülemaailmses veebi ja leidsin mitmeid sobivaid näiteid stackoverflow'ist (Double x-axis on a spider plot with Gnuplot ja How to Create a Spider Plot in Gnuplot?) ja github'ist (gnuplot-radarchart). Need said lähtepunktiks.

Jätkates, mu käsitlused käskudega viisid järgmiste tulemusteni:

0) Lülitame välja piirded

unset border

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

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Mõned sõnad nulljoonte kohta dokumentatsioonis. See toiming võimaldab telgedel keskenduda joonisele. Täiendavad on vajalikud, et näidata positiivseid märke.

2) Seame telgedel tikke kuvamise:

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

Tiksid telgede seadete peal on veidi rohkem.
telg — kus tiksid asuvad, teljel või (piiril — piiril).
Telje jaoks x, mis suundub paremale 0,.5,max. Esimene number on alguspunkt, teine on samm, kolmas on lõpp-punkt. Esimese puhul 0, aga ülejäänute puhul 0.5, et nullid ei segaks koordinaatide alguses.

Gnuplot 5.0. Spiderplot 4 teljele oma kätega
Gnuplot 5.0. Spiderplot 4 teljele oma kätega

Nullide segamine koordinaatide keskosas.
Kõik intervallid *tiksid on seadistatud nagu 0,.5,max
Without offset 0.35 kuna xtics

Seadistamine scale 0.5,0.25 mirror lisab teljele marke. Kui numbritega mängida, siis muutub nende suurus.
Samuti tutvustan muutujaid max, min, millega juhin graafiku telgede piire.
Tiksude seadistamise kohta lisainformatsiooni leiate dokumentatsiooni jaotises 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 alustavad arvestust min kasvamiseks ja 2 telge — max vähenemiseks.
Lisainfo jaotises Xrange.

4) Anname telgedele nimed ja asetame need ilusti paika:

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) Vormime sisendandmeid
Iga joonise jaoks on eraldatud 2 veergu. Rea number — telje number, viies rida, et kontuur sulgeda. Paaritu veerg — koordinaat x, paaris — y. Kuna kõik punktid asuvad telgedel, siis paarist (x, y) üks on alati null.
Hoolimata sellest, et kõik 4 telge on positiivsed, käigutakse mõned andmed kunstlikult negatiivse poolele, sest 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 4 teljele 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 veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster