Gnuplot 5.0. Spiderplot med 4 akser laget for hånd

Gnuplot 5.0. Spiderplot med 4 akser laget for hånd
Når jeg jobbet med datavisualiseringen for artikkelen, oppstod det behov for å ha 4 akser med positive merker på alle.

Som for de andre diagrammene i artikkelen, bestemte jeg meg for å bruke gnuplot. Først tok jeg en titt på den offisielle nettsiden, hvor det finnes mange eksempler. Jeg ble veldig glad da jeg fant det nødvendige eksempel (litt finsliping, så blir det fint, tenkte jeg).
Gnuplot 5.0. Spiderplot med 4 akser laget for hånd
Jeg kopierte raskt koden, kjørte den. Fikk en feil. Jeg undersøkte. Det viste seg at jeg hadde en gammel versjon av gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) og den kan ikke gjøre det.

Med tanke på fleksibiliteten til gnuplot, begynte jeg å surfe på internett og kom over flere passende eksempler på stackoverflow (Double x-axis on a spider plot with Gnuplot og How to Create a Spider Plot in Gnuplot?) og github (gnuplot-radarchart). De ble utgangspunktet.

Deretter førte mine manipuleringer med kommandoene til følgende:

0) Deaktiverer grenser

unset border

1) Oppretter 4 null-linjer — 2 hovedlinjer og 2 tilleggslinjer:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Et par ord om null-linjene i dokumentasjonen. Denne operasjonen sentrerer aksene i midten av bildet. De tilleggslinjene er nødvendige for å vise positive tick-marks.

2) Justerer visningen av ticks på aksene:

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

Det er litt mer innstillinger med ticks på aksene.
aksis — hvor tick-merker vil være, på aksen eller (border — på grensen).
For aksen x, som går til høyre 0,.5,max. Det første tallet er startpunktet, det andre er stegstørrelsen, det tredje er sluttpunktet. For den første fra 0, og for de andre fra 0.5, slik at nullene ikke blandes i koordinatens start.

Gnuplot 5.0. Spiderplot med 4 akser laget for hånd
Gnuplot 5.0. Spiderplot med 4 akser laget for hånd

Blandingen av nuller i sentrum av koordinatene.
Alle intervaller *tics er justert som 0,.5,max
Uten offset 0.35 for xtics

Konfigurasjon scale 0.5,0.25 mirror legger til merker på aksen. Hvis man leker med tallene, vil størrelsen på merkene endre seg.
Jeg definerer også variablene max, min, som jeg bruker for å styre aksegrensene til diagrammet.
Ytterligere informasjon om justering av ticks kan finnes i dokumentasjonen under Xtics.

3) Justerer akseområdene:

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

Her må det bemerkes at 2 akser starter fra min i økning, og 2 akser — fra maks i reduksjon.
Ytterligere informasjon i seksjonen Xrange.

4) Gi ossene navn og plasser dem pent:

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) Danner inndata
Hver graf har 2 kolonner. Radnummeret er aksenummeret, femte rad for å lukke konturen. Oddetallskolonnen er koordinatet x, partalls — y. Siden alle punkter ligger på aksene, vil ett av paret (x, y) alltid være lik null.
Selv om alle 4 aksene er positive, flyttes noen data kunstig til den negative halvdelen fordi de ligger på de primære aksene. x og 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 #Duplikat av det første punktet

Resultatet
Gnuplot 5.0. Spiderplot med 4 akser laget for hånd
Hele koden

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

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster