Gnuplot 5.0. Spiderplot me 4 boshte, i ndërtuar vetë

Gnuplot 5.0. Spiderplot me 4 boshte, i ndërtuar vetë
Në punën me vizatimin e të dhënave për artikullin, kishte nevojë për 4 akse me etiketa pozitive në të gjitha.

Si për grafiket e tjera të artikullit, vendosa të përdor gnuplot. E para gjë që bëra ishte të shikoja në sitin zyrtar, ku kishte shumë shembuj. Më gëzoi shumë kur zbulova të nevojshmin është (do të punoj pak me files dhe do të duket bukur, mendova unë).
Gnuplot 5.0. Spiderplot me 4 boshte, i ndërtuar vetë
E kopjova shpejt kodin, e nisa. Mora një gabim. Po e shqyrtoj. Doli që kam një gnuplot të vjetër (Version 5.0 patchlevel 3 i modifikuar për herë të fundit më 2016-02-21) dhe ai nuk e di atë.

Duke ditur për fleksibilitetin e gnuplot, fillova të kërkoj në hapësirën e internetit dhe u ndesha me disa shembuj të përshtatshëm në stackoverflow (Double x-axis on a spider plot with Gnuplot dhe How to Create a Spider Plot in Gnuplot?) dhe github (gnuplot-radarchart). Ato u bënë pika e nisjes.

Më pas, manipulimet e mia me komandat çuan në këtë pasojë:

0) Shkëputim kufijtë

unset border

1) Krijojmë 4 linja zero - 2 të rëndësishme dhe 2 të tjera:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Pak fjalë mbi linjat zero në dokumentacionin. Ky operacion lejon që akset të shkojnë në qendër të vizatimit. Ato shtesat janë të nevojshme për të shfaqur tikut pozitive.

2) Rregullojmë shfaqjen e tikeve në akse:

max = 1.5 # Për fleksibilitet
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            

Me tiket në akse, ka pak më shumë rregullime.
axis - ku do të jenë tiket, në aks ose (border - në kufi).
Për aksin x, i cili shkon në të djathtë 0,.5,max. Numri i parë - fillimi i numërimit, i dyti - hapi, i tretë - fundi i numërimit. Për të parin nga 0, dhe për të tjerat nga 0.5, në mënyrë që zero të mos pengohet në fillim të koordinatave.

Gnuplot 5.0. Spiderplot me 4 boshte, i ndërtuar vetë
Gnuplot 5.0. Spiderplot me 4 boshte, i ndërtuar vetë

Përzierja e zeros në qendër të koordinatave.
Të gjithë intervalet *tics janë rregulluar si 0,.5,max
Pa offset 0.35 për xtics

Configuration scale 0.5,0.25 mirror shton shenjat në aks. Nëse luani me numrat, do të ndryshojë madhësia e tyre.
Gjithashtu, po futem variablat max, min, me të cilat kontrolloj kufijtë e akseve të grafikut.
Informacione të mëtejshme rreth rregullimit të tikeve mund të gjenden në dokumentacion në seksionin Xtics.

3) Rregullojmë gamën e akseve:

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

Këtu duhet të theksohet se 2 akse fillojnë numërimin nga min në rritje dhe 2 akse - nga maks në zvogëlim.
Informacione të mëtejshme në seksionin Xrange.

4) Jepem emrat e akseve dhe i vendosim në mënyrë të bukur:

vendos etiketën "H_1" në 0, maksimumi offset qendra karakter 2, 0
vendos etiketën "H_2" në maksimum+0.1, 0 offset qendra karakter -1, 1
vendos etiketën "H_3" në 0, minimumi offset qendra karakter -2, 0
vendos etiketën "H_4" në minimum, 0 offset qendra karakter 0, 1

5) Formulojmë të dhënat hyrëse
Për çdo grafik janë ndarë 2 kolona. Numri i rreshtit — numri i aksit, rreshti i pestë, për të lidhur konturin. Kolona çifti — koordinata x, kolona tekën — y. Duke qenë se të gjitha pikat ndodhen në akse, atëherë nga çifti (x, y) njëra gjithmonë është e barabartë me zero.
Pavarësisht se të gjitha 4 akset janë pozitive, disa të dhëna lëvizen artificialisht në gjysmën negative, sepse ndodhen në akset kryesore x dhe 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 #Dublikati i pikës së parë

Rezultati
Gnuplot 5.0. Spiderplot me 4 boshte, i ndërtuar vetë
Kodi i plotë

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

Burimi: habr.com

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster