Gnuplot 5.0. Spiderplot négy tengellyel saját kezűleg

Gnuplot 5.0. Spiderplot négy tengellyel saját kezűleg
Az adatok vizualizálásán dolgozva, szükségem volt 4 tengelyre, amelyeken mindenhol pozitív címkék voltak.

Ahogy a cikk többi grafikusához, úgy ehhez is az gnuplot-ot. Először is benéztem a hivatalos honlapra, ahol rengeteg példa található. Nagyon örültem, amikor megtaláltam a szükségeset példám ("nem kell sokat dolgoznom a fával, és szép lesz, gondoltam).
Gnuplot 5.0. Spiderplot négy tengellyel saját kezűleg
Gyorsan lemásoltam a kódot, futtatom. Hibát kapok. Utánanézek. Kiderült, hogy régi gnuplot-om van (5.0 patchlevel 3, utolsó módosítás: 2016-02-21) és ez nem tudja.

Tudva, hogy a gnuplot mennyire rugalmas, elkezdtem böngészni a világhálót, és belefutottam néhány megfelelő példába a stackoverflow-n (Két x-tengely egy spider plotban Gnuplot-ot használva és Hogyan készítsünk spider plotot Gnuplot-ból?) és github-on (gnuplot-radarchart). Ezek lettek az alapok.

Ezután a parancsaim manipulálása a következőhöz vezetett:

0) Kikapcsoljuk a határokat

unset border

1) Létrehozunk 4 nullás vonalat — 2 főt és 2 kiegészítőt:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Néhány szó a nullás vonalakról a dokumentáció. Ez a művelet lehetővé teszi, hogy a tengelyeket a rajz középpontjába vonjuk. A kiegészítők szükségesek ahhoz, hogy a pozítiv tikeket ott jelenítsük meg.

2) A tikek megjelenését a tengelyeken állítjuk be:

max = 1.5 # A rugalmasság érdekében
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            

A tikekkel a tengelyeken kicsit több beállítás szükséges.
axis - hol helyezkednek el a tikek, a tengelyen vagy (border — a határon).
A tengelynek x, ami jobbra mutat 0,.5,max. Az első szám a kiindulási pont, a második a lépés, a harmadik a végpont. Az első a 0, a többi pedig a 0.5, hogy a nullák ne zavarjanak a koordináták elején.

Gnuplot 5.0. Spiderplot négy tengellyel saját kezűleg
Gnuplot 5.0. Spiderplot négy tengellyel saját kezűleg

A nullák keverése a koordináták középpontjában.
Az összes intervallum *tics beállítása úgy történt 0,.5,max
Anélkül, hogy offset 0.35 a xtics

Beállítás scale 0.5,0.25 mirror hozzáadja a bemetszéseket a tengelyhez. Ha játszanak a számokkal, változhat a méretük.
Továbbá bevezetem a változókat max, min, amikkel vezérlem a grafikon tengelyeinek határait.
További információ a tikek beállításáról a dokumentációban található a Xtics.

3) A tengelyek tartományainak beállítása:

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

Itt meg kell említeni, hogy 2 tengely növekedésből indul min és 2 tengely csökkenésből indul max .
További információ a Xrange szakaszban található..

4) Adjunk neveket és szépen elhelyezzük őket:

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) Bejövő adatok előállítása
Minden grafikonhoz 2 oszlop van kijelölve. A sor száma – az oszály száma, az ötödik sor a kontúr zárására. A páratlan oszlop a koordináta x, a páros — y. Mivel az összes pont az oszályokon helyezkedik el, ezért a párból (x, y) az egyik mindig nullának felel meg.
Annak ellenére, hogy mind a 4 oszály pozitív, néhány adatot mesterségesen a negatív felére helyeznek, mivel a fő oszályokon találhatók x és 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 #Az első pont másolata

Eredmény
Gnuplot 5.0. Spiderplot négy tengellyel saját kezűleg
Teljes kód

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

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster