Gnuplot 5.0. DIY Spiderplot på 4 akser

Gnuplot 5.0. DIY Spiderplot på 4 akser
Ved arbeid med datavisualisering for en artikkel ble det nødvendig å ha 4 akser med positive etiketter på alle.

Som med andre grafer i artikkelen, bestemte jeg meg for å bruke gnuplot. Først av alt så jeg på den offisielle nettsiden, hvor det er mange eksempler. Jeg ble veldig glad da jeg fant den rette eksempel (Jeg skal jobbe litt med en fil, og den blir vakker, tenkte jeg).
Gnuplot 5.0. DIY Spiderplot på 4 akser
Jeg kopierte raskt koden og kjørte den. Jeg får en feilmelding. Jeg finner ut av det. Det viste seg at jeg har en gammel gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) og han kan ikke gjøre det.

Da jeg visste om fleksibiliteten til gnuplot, begynte jeg å lete rundt på World Wide Web og kom over flere passende eksempler på stackoverflow (Dobbel x-akse på en edderkoppplot med Gnuplot и Hvordan lage et edderkoppplott i Gnuplot?) og github (gnuplot-radarchart). De ble utgangspunktet.

Videre førte mine manipulasjoner med kommandoene til følgende:

0) Deaktiver grenser

unset border

1) Lag 4 nulllinjer - 2 hovedlinjer og 2 ekstra:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Noen få ord om null linjer inn dokumentasjon. Denne operasjonen lar deg bringe aksene til midten av bildet. Og flere er nødvendig for å vise positive haker på dem.

2) Sett opp visningen av haker på aksene:

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            

Med haker på aksene er det litt flere innstillinger.
axis - hvor flåtten vil være plassert, på aksen eller (grensen - på grensen).
For akse x, som går til høyre 0,.5,max. Det første tallet er starten på nedtellingen, det andre er trinnet, det tredje er slutten på nedtellingen. For den første fra 0, og for resten fra 0.5, slik at nullene ikke forstyrrer origo.

Gnuplot 5.0. DIY Spiderplot på 4 akser
Gnuplot 5.0. DIY Spiderplot på 4 akser

Blander nuller ved koordinatsenteret.
Alle intervaller *tics konfigurert som 0,.5,max
uten offset 0.35 for xtics

justering scale 0.5,0.25 mirror legger til hakk til aksen. Hvis du spiller med tallene, vil størrelsen deres endres.
Jeg legger også inn variabler max, min, ved hjelp av denne kontrollerer jeg grensene til grafaksene.
Ytterligere informasjon om innsetting av hake finner du i dokumentasjonen i avsnittet Xtics.

3) Sett opp akseområder:

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

Det skal her bemerkes at de 2 aksene starter fra min for forstørrelse og 2 akser - med max å redusere.
Ytterligere informasjon i avsnittet Xrange.

4) Gi øksene navn og plasser dem vakkert:

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) Forming av inngangsdata
Hver graf har 2 kolonner. Linjenummer - aksenummer, femte linje for å lukke sløyfen. Odd kolonne - koordinat x, til og med - y. På grunn av det faktum at alle punktene er plassert på aksene, da fra paret (x, y) en er alltid null.
Selv om alle 4 aksene er positive, flyttes noen data kunstig til den negative halvdelen fordi de er plassert på hovedaksene 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 #Дубликат первой точки

Resultat
Gnuplot 5.0. DIY Spiderplot på 4 akser
Full kode

#!/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: www.habr.com

Legg til en kommentar