gnuplot 5.0. Spiderplot sur 4 aksoj faru ĝin mem

gnuplot 5.0. Spiderplot sur 4 aksoj faru ĝin mem
Laborante pri datuma bildigo por artikolo, fariĝis necese havi 4 aksojn kun pozitivaj etikedoj sur ĉiuj.

Kiel ĉe aliaj grafikaĵoj en la artikolo, mi decidis uzi gnuplot. Antaŭ ĉio, mi rigardis la oficialan retejon, kie estas multaj ekzemploj. Mi estis tre feliĉa kiam mi trovis la ĝustan ekzemplo (Mi iom laboros kun dosiero kaj ĝi estos bela, mi pensis).
gnuplot 5.0. Spiderplot sur 4 aksoj faru ĝin mem
Mi rapide kopiis la kodon kaj kuris ĝin. Mi ricevas eraron. Mi eltrovas ĝin. Montriĝis, ke mi havas malnovan gnuploton (Version 5.0 patchlevel 3 last modified 2016-02-21) kaj li ne povas fari tion.

Sciante pri la fleksebleco de gnuplot, mi komencis traserĉi la Tutmondan Reton kaj trovis plurajn taŭgajn ekzemplojn pri stackoverflow (Duobla x-akso sur araneo-intrigo kun Gnuplot и Kiel Krei Aranean Intrigon en Gnuplot?) kaj github (gnuplot-radarchart). Ili fariĝis la deirpunkto.

Plue, miaj manipuladoj kun la komandoj kondukis al la sekvanta:

0) Malebligu limoj

unset border

1) Kreu 4 nulliniojn - 2 ĉefajn kaj 2 pliajn:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Kelkaj vortoj pri nul linioj en dokumentado. Ĉi tiu operacio permesas al vi alporti la aksojn al la centro de la bildo. Kaj aldonaj necesas por montri pozitivajn tikojn sur ili.

2) Agordu la montradon de iksodoj sur la aksoj:

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            

Kun iksodoj sur la aksoj estas iom pli da agordoj.
axis - kie la iksodoj troviĝos, sur la akso aŭ (bordo - sur la limo).
Por akso x, kiu iras dekstren 0,.5,max. La unua numero estas la komenco de la retronombrado, la dua estas la paŝo, la tria estas la fino de la retronombrado. Por la unua de 0, kaj por la resto de 0.5, tiel ke la nuloj ne malhelpas la originon.

gnuplot 5.0. Spiderplot sur 4 aksoj faru ĝin mem
gnuplot 5.0. Spiderplot sur 4 aksoj faru ĝin mem

Miksado de nuloj ĉe la koordinata centro.
Ĉiuj intervaloj *tics agordita kiel 0,.5,max
Sen offset 0.35 por xtics

alĝustigo scale 0.5,0.25 mirror aldonas noĉojn al la akso. Se vi ludas kun la nombroj, ilia grandeco ŝanĝiĝos.
Mi ankaŭ enigas variablojn max, min, per kies helpo mi regas la limojn de la grafeaksoj.
Pliaj informoj pri agordo de tikoj troveblas en la dokumentado en la sekcio Xtics.

3) Agordu aksajn gamojn:

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

Oni notu ĉi tie, ke la 2 aksoj komenciĝas de min por pligrandigo kaj 2 aksoj - kun max malpliiĝi.
Pliaj informoj en la sekcio Xrange.

4) Donu nomojn al la aksoj kaj metu ilin bele:

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) Formante la enigajn datumojn
Ĉiu grafikaĵo havas 2 kolumnojn. Linia nombro - aksa nombro, kvina linio por fermi la buklon. Nepara kolumno - koordinato x, eĉ - y. Pro la fakto, ke ĉiuj punktoj situas sur la aksoj, tiam de la paro (x, y) unu estas ĉiam nulo.
Eĉ se ĉiuj 4 aksoj estas pozitivaj, iuj datumoj estas artefarite movitaj al la negativa duono ĉar ĝi situas sur la ĉefaj aksoj. 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 #Дубликат первой точки

rezulto
gnuplot 5.0. Spiderplot sur 4 aksoj faru ĝin mem
Plena kodo

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

fonto: www.habr.com

Aldoni komenton