Gnuplot 5.0. DIY Spiderplot på 4-axlig

Gnuplot 5.0. DIY Spiderplot på 4-axlig
När man arbetade med datavisualisering för en artikel blev det nödvändigt att ha 4 axlar med positiva etiketter på alla.

Som med andra grafer i artikeln bestämde jag mig för att använda gnuplot. Först och främst tittade jag på den officiella webbplatsen, där det finns många exempel. Jag blev väldigt glad när jag hittade rätt exempel (Jag ska jobba lite med en fil och den blir vacker, tänkte jag).
Gnuplot 5.0. DIY Spiderplot på 4-axlig
Jag kopierade snabbt koden och körde den. Jag får ett felmeddelande. Jag klurar på det. Det visade sig att jag har en gammal gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) och det kan han inte göra.

När jag visste om flexibiliteten med gnuplot började jag leta igenom World Wide Web och hittade flera lämpliga exempel på stackoverflow (Dubbel x-axel på en spindelplot med Gnuplot и Hur skapar man en spindelplot i Gnuplot?) och github (gnuplot-radarchart). De blev utgångspunkten.

Vidare ledde mina manipulationer med kommandona till följande:

0) Inaktivera gränserna

unset border

1) Skapa 4 nollrader - 2 huvudlinjer och 2 ytterligare:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Några ord om noll linjer in dokumentation. Denna operation låter dig föra axlarna till mitten av bilden. Och ytterligare sådana behövs för att visa positiva markeringar på dem.

2) Ställ in visningen av fästingar på axlarna:

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 fästingar på axlarna finns det lite fler inställningar.
axis - var fästingarna kommer att placeras, på axeln eller (gränsen - på gränsen).
För axel x, som går till höger 0,.5,max. Den första siffran är början på nedräkningen, den andra är steget, den tredje är slutet på nedräkningen. För den första från 0, och för resten från 0.5, så att nollorna inte stör origo.

Gnuplot 5.0. DIY Spiderplot på 4-axlig
Gnuplot 5.0. DIY Spiderplot på 4-axlig

Blanda nollor vid koordinatcentrum.
Alla intervaller *tics konfigurerad som 0,.5,max
utan offset 0.35 för xtics

justering scale 0.5,0.25 mirror lägger till skåror på axeln. Om du spelar med siffrorna kommer deras storlek att ändras.
Jag anger även variabler max, min, med vars hjälp jag styr gränserna för grafaxlarna.
Ytterligare information om att sätta fästingar finns i dokumentationen i avsnittet Xtics.

3) Ställ in axelområden:

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

Det bör noteras här att de 2 axlarna utgår från min för förstoring och 2 axlar - med max att minska.
Ytterligare information i avsnittet Xrange.

4) Ge yxorna namn och placera dem vackert:

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) Bildning av indata
Varje graf har 2 kolumner. Linjenummer - axelnummer, femte raden för att stänga slingan. Udda kolumn - koordinat x, även - y. På grund av det faktum att alla punkter är belägna på axlarna, då från paret (x, y) ett är alltid noll.
Även om alla fyra axlarna är positiva, flyttas vissa data på konstgjord väg till den negativa halvan eftersom de är placerade på huvudaxlarna 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-axlig
Fullständig kod

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

Källa: will.com

Lägg en kommentar