gnuplot 5.0. Spiderplot op 4 asse doen dit self

gnuplot 5.0. Spiderplot op 4 asse doen dit self
Wanneer daar aan datavisualisering vir 'n artikel gewerk word, het dit nodig geword om 4 asse met positiewe etikette op almal te hê.

Soos met ander grafieke in die artikel, het ek besluit om te gebruik gnuplot. Eerstens het ek na die amptelike webwerf gekyk, waar daar baie voorbeelde is. Ek was baie bly toe ek die regte een kry Byvoorbeeld (Ek sal 'n bietjie met 'n lêer werk en dit sal pragtig wees, het ek gedink).
gnuplot 5.0. Spiderplot op 4 asse doen dit self
Ek het vinnig die kode gekopieer en dit laat loop. Ek kry 'n fout. Ek is besig om dit uit te vind. Dit het geblyk dat ek 'n ou gnuplot het (Version 5.0 patchlevel 3 last modified 2016-02-21) en hy kan dit nie doen nie.

Omdat ek geweet het van die buigsaamheid van gnuplot, het ek die Wêreldwye Web begin deursoek en op verskeie geskikte voorbeelde van stackoverflow afgekom (Dubbel x-as op 'n spinnekop plot met Gnuplot и Hoe om 'n spinnekopplot in Gnuplot te skep?) en github (gnuplot-radarchart). Hulle het die beginpunt geword.

Verder het my manipulasies met die opdragte gelei tot die volgende:

0) Deaktiveer grense

unset border

1) Skep 4 nul-lyne - 2 hoof- en 2 addisionele:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

'n Paar woorde oor nul reëls in dokumentasie. Hierdie operasie laat jou toe om die asse na die middel van die prentjie te bring. En bykomendes is nodig om positiewe regmerkies daarop te vertoon.

2) Stel die vertoning van bosluise op die asse op:

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            

Met regmerkies op die asse is daar 'n bietjie meer verstellings.
axis - waar die bosluise geleë sal wees, op die as of (grens - op die grens).
Vir as x, wat na regs gaan 0,.5,max. Die eerste nommer is die begin van die aftelling, die tweede is die stap, die derde is die einde van die aftelling. Vir die eerste van 0, en vir die res van 0.5, sodat die nulle nie inmeng met die oorsprong nie.

gnuplot 5.0. Spiderplot op 4 asse doen dit self
gnuplot 5.0. Spiderplot op 4 asse doen dit self

Meng nulle by die koördinaatmiddelpunt.
Alle intervalle *tics gekonfigureer as 0,.5,max
sonder offset 0.35 vir xtics

aanpassing scale 0.5,0.25 mirror voeg kerwe by die as. As jy met die nommers speel, sal hul grootte verander.
Ek voer ook veranderlikes in max, min, met behulp waarvan ek die grense van die grafiek-asse beheer.
Bykomende inligting oor die stel van bosluise kan gevind word in die dokumentasie in die afdeling Xtics.

3) Stel asreekse op:

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

Daar moet hier kennis geneem word dat die 2 asse begin vanaf min vir vergroting en 2 asse - met max om te verminder.
Bykomende inligting in die afdeling Xrange.

4) Gee die asse name en plaas dit mooi:

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) Vorm die insetdata
Elke grafiek het 2 kolomme. Lynnommer - asnommer, vyfde lyn om die lus te sluit. Onewe kolom - koördinaat x, selfs - y. As gevolg van die feit dat alle punte op die asse geleë is, dan vanaf die paar (x, y) een is altyd nul.
Al is al 4 asse positief, word sommige data kunsmatig na die negatiewe helfte geskuif omdat dit op die hoofasse geleë is 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 #Дубликат первой точки

Gevolg
gnuplot 5.0. Spiderplot op 4 asse doen dit self
Volle kode

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

Bron: will.com

Voeg 'n opmerking