Gnuplot 5.0. Spiderplot med 4 axlar pÄ egen hand

Gnuplot 5.0. Spiderplot med 4 axlar pÄ egen hand
NÀr jag arbetade med datavisualisering för artikeln uppstod behovet av att ha 4 axlar med positiva etiketter pÄ alla.

Som med andra diagram i artikeln beslutade jag mig för att anvÀnda gnuplot. Först tog jag en titt pÄ den officiella webbplatsen dÀr det finns mÄnga exempel. Jag blev mycket glad nÀr jag hittade den nödvÀndiga exempel (lite fint arbete hÀr och dÀr, tÀnkte jag).
Gnuplot 5.0. Spiderplot med 4 axlar pÄ egen hand
Jag kopierade snabbt koden, körde den. Fick ett fel. Jag undersökte. Det visade sig att jag hade en gammal version av gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) och den kan inte göra sÄ.

Med vetskap om gnuplots flexibilitet började jag söka pÄ nÀtet och stötte pÄ nÄgra passande exempel pÄ stackoverflow (Double x-axis on a spider plot with Gnuplot och How to Create a Spider Plot in Gnuplot?) och github (gnuplot-radarchart). De blev min utgÄngspunkt.

DÀrefter ledde mina manipulationer med kommandon till följande:

0) StÀng av grÀnser

unset border

1) Skapa 4 nollinjer - 2 huvudsakliga och 2 ytterligare:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

NÄgra ord om nollinjer i dokumentationen. Denna operation gör det möjligt att centrera axlarna i diagrammet. De ytterligare behövs för att visa positiva tickar.

2) StÀll in visning av tickarna pÄ axlarna:

max = 1.5 # För flexibilitet
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 tickarna pÄ axlarna Àr instÀllningarna lite fler.
axis — dĂ€r tickarna kommer att placeras, pĂ„ axeln eller (border — pĂ„ grĂ€nsen).
För axeln x, som gÄr Ät höger 0,.5,max. Det första talet Àr startpunkten, det andra Àr steget, det tredje Àr slutpunkten. För den första frÄn 0, och för de andra frÄn 0.5, sÄ att nollorna inte stör i origo.

Gnuplot 5.0. Spiderplot med 4 axlar pÄ egen hand
Gnuplot 5.0. Spiderplot med 4 axlar pÄ egen hand

Blandning av nollor i origo.
Alla intervall *tics Àr instÀllda som 0,.5,max
Utan offset 0.35 för xtics

InstÀllning scale 0.5,0.25 mirror lÀgger till markeringar pÄ axeln. Om man leker med siffrorna, kommer storleken pÄ dem att förÀndras.
Jag introducerar ocksÄ variablerna max, min, med hjÀlp av vilka jag styr grÀnserna för diagrammets axlar.
Ytterligare information om instÀllning av tickar kan hittas i dokumentationen i avsnittet Xtics.

3) StÀll in axlarnas intervall:

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

HĂ€r bör man notera att 2 axlar börjar rĂ€kna frĂ„n min i ökande och 2 axlar — frĂ„n max i minskande.
Ytterligare information i avsnittet Xrange.

4) Vi namnger axlarna och placerar 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) Vi formar indata
Varje diagram fĂ„r tvĂ„ kolumner. Radnumret Ă€r axelnummret, den femte raden anvĂ€nds för att stĂ€nga konturen. Udda kolumn Ă€r koordinaten x, jĂ€mn — y. Eftersom alla punkter ligger pĂ„ axlarna, sĂ„ Ă€r en av paret (x, y) alltid lika med noll.
Trots att alla 4 axlar Àr positiva, flyttas vissa data artificiellt till den negativa halvan eftersom de ligger pÄ huvudaxlarna x och 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 #Dublett av första punkten

Resultat
Gnuplot 5.0. Spiderplot med 4 axlar pÄ egen hand
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: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster