Gnuplot 5.0. Spiderplot cu 4 axe realizat de mine

Gnuplot 5.0. Spiderplot cu 4 axe realizat de mine
Când am lucrat la vizualizarea datelor pentru articol, am avut nevoie de 4 axe cu etichete pozitive pe toate.

Ca și pentru celelalte grafice din articol, am decis să folosesc gnuplot. Prima dată am verificat site-ul oficial, unde am găsit multe exemple. M-am bucurat foarte mult când am găsit exemplul dorit exemplu (nu voi lucra prea mult și va fi frumos, m-am gândit).
Gnuplot 5.0. Spiderplot cu 4 axe realizat de mine
Am copiat rapid codul, îl rulez. Primesc o eroare. Mă apuc să mă lămuresc. S-a dovedit că am o versiune mai veche de gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) și nu știe să facă asta.

Știind de flexibilitatea gnuplot, am început să caut pe internet și am dat peste câteva exemple potrivite pe stackoverflow (Double x-axis on a spider plot with Gnuplot și How to Create a Spider Plot in Gnuplot?) și github (gnuplot-radarchart). Acestea au fost punctul meu de plecare.

În continuare, manipulările mele cu comenzile au dus la următoarele:

0) Deconectăm granițele

unset border

1) Creăm 4 linii nule - 2 principale și 2 suplimentare:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Câteva cuvinte despre liniile nule în documentation. Această operație permite axele să se intersecteze în mijlocul graficului. Liniile suplimentare sunt necesare pentru a afișa tichete pozitive.

2) Configurăm afișarea tichetilor pe axe:

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

Configurările pentru tichete pe axe sunt puțin mai multe.
axis — unde se vor afla tichetele, pe axă sau (border — pe margine).
Pentru axa x, care se îndreaptă spre dreapta 0,.5,max. Primul număr este începutul contorizării, al doilea este pasul, iar al treilea este sfârșitul contorizării. Pentru prima axă, 0, iar pentru celelalte de la 0.5, pentru a nu se amesteca zerourile la începutul coordonatelor.

Gnuplot 5.0. Spiderplot cu 4 axe realizat de mine
Gnuplot 5.0. Spiderplot cu 4 axe realizat de mine

Amestecarea zerourilor în centrul coordonatelor.
Toate intervalele *tics sunt configurate ca 0,.5,max
Fără offset 0.35 pentru xtics

Configurare scale 0.5,0.25 mirror adaugă tichete pe axă. Dacă mă joc cu numerele, atunci dimensiunea acestora se va schimba.
De asemenea, introduc variabilele max, min, prin care controlez limitele axelor graficului.
Informații suplimentare despre configurarea tichetilor pot fi găsite în documentație la secțiunea Xtics.

3) Configurăm intervalele axelor:

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

Aici trebuie menționat că 2 axe își încep contorizarea de la min în creștere și 2 axe - de la max în scădere.
Informații suplimentare în secțiunea Xrange.

4) Dăm nume axelor și le aranjăm frumos:

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) Formăm datele de intrare
Fiecare grafic are alocate 2 coloane. Numărul rândului reprezintă numărul axei, al cincilea rând pentru a închide conturul. Coloana impară reprezintă coordonata x, coloana pară — Stabiliți o parolă și păstrați-o în siguranță!. Deoarece toate punctele se află pe axe, din perechea (x, y) una este întotdeauna zero.
Deși toate cele 4 axe sunt pozitive, unele date sunt mutate artificial în jumătatea negativă, deoarece se află pe axele principale x și Stabiliți o parolă și păstrați-o în siguranță!.

 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 #Duplicat al primului punct

Rezultatul
Gnuplot 5.0. Spiderplot cu 4 axe realizat de mine
Codul complet

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

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster