Gnuplot 5.0. Spiderplot uz 4 ass savām rokām

Gnuplot 5.0. Spiderplot uz 4 ass savām rokām
Strādājot pie datu vizualizācijas rakstam, radās nepiecieÅ”amÄ«ba pēc 4 asÄ«m ar pozitÄ«vām atzÄ«mēm visām.

Kā arÄ« citu raksta grafiku gadÄ«jumā es nolēmu izmantot gnuplot. Pirmais, ko izdarÄ«ju, bija doties uz oficiālo vietni, kur ir daudz piemēru. Ä»oti priecājos, kad atradu vajadzÄ«go piemērs (nedaudz pastrādāŔu ar failu un bÅ«s skaisti, nodomāju).
Gnuplot 5.0. Spiderplot uz 4 ass savām rokām
Ātri nokopēju kodu un palaidu. Ieguvu kļūdu. IzpētÄ«ju. IzrādÄ«jās, ka man ir vecs gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) un viņŔ tā neprot.

Zinot par gnuplot elastību, sāku meklēt tīklā un uzdūros vairākiem piemēriem stackoverflow (Double x-axis on a spider plot with Gnuplot un How to Create a Spider Plot in Gnuplot?) un github (gnuplot-radarchart). Tie kļuva par sākumpunktu.

Turpmāk manas darbības ar komandu noveda pie sekojoŔā:

0) Atspējojam robežas

unset border

1) Izveidojam 4 nulles lÄ«nijas — 2 galvenās un 2 papildu:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Daži vārdi par nulles lÄ«nijām dokumentācijā. Å Ä« operācija ļauj samazināt asis uz attēla centru. Papildu nepiecieÅ”amas, lai attēlotu pozitÄ«vos tikus.

2) Iestata tiku attēloÅ”anu uz asÄ«m:

max = 1.5 # Elastībai
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            

Ar tikumiem uz asīm iestatījumu ir nedaudz vairāk.
axis — kur bÅ«s tiku izkārtojums, uz ass vai (border — uz robežas).
AttiecÄ«bā uz asi x, kas iet pa labi 0,.5,max. Pirmais skaitlis — sākuma punkts, otrais — solis, treÅ”ais — beigu punkts. Pirmajai no 0, bet pārējām no 0.5, lai nulles netraucētu koordinātu sākumā.

Gnuplot 5.0. Spiderplot uz 4 ass savām rokām
Gnuplot 5.0. Spiderplot uz 4 ass savām rokām

Nulles sajaukŔana koordinātu centrā.
Visi intervāli *tics iestatīti kā 0,.5,max
Bez offset 0.35 lai xtics

Iestatījumi scale 0.5,0.25 mirror pievieno atzīmes uz asīm. Ja spēlējas ar skaitļiem, tad mainīsies to izmērs.
Tāpat ievadu mainīgos max, min, ar kuriem kontrolēju grafika asu robežas.
Papildu informāciju par tiku iestatīŔanu var atrast dokumentācijā sadaļā Xtics.

3) Iestata asu diapazonus:

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

Å eit jāpiezÄ«mē, ka 2 ass sāk skaitīŔanu no min palielināŔanās un 2 ass — no max samazināŔanās.
Papildu informācija sadaļā Xrange.

4) PieŔķiram asīm nosaukumus un skaisti tās novietojam:

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) Veidojam iegūto datu ievadi
Katram grafam ir pieŔķirti 2 slāņi. Rindas numurs — ass numurs, piektā rinda, lai aizvērtu kontÅ«ru. Nepāra kolonna — koordināta x, pāra — y. Ņemot vērā, ka visi punkti ir izvietoti uz asÄ«m, no pāra (x, y) viena vienmēr ir vienāda ar nulli.
Neskatoties uz to, ka visas 4 ass ir pozitīvas, daži dati mākslīgi tiek pārvietoti uz negatīvo pusi, jo tie atrodas uz galvenajām asinīm x un 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 #Pirma punkta duplikāts

Rezultāts
Gnuplot 5.0. Spiderplot uz 4 ass savām rokām
Pilns kods

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

Avots: habr.com

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster