Gnuplot 5.0. Spiderplot bricolage 4 axes

image
Lorsque vous travaillez sur la visualisation des données d'un article, il est devenu nécessaire d'avoir 4 axes avec des étiquettes positives sur tous.


Comme pour les autres tableaux d'articles, j'ai décidé d'utiliser gnuplot . Tout d'abord, j'ai regardé le site officiel, où il existe de nombreux exemples. J'étais très content quand j'ai trouvé l' exemple nécessaire (je ne travaillerai pas beaucoup avec un fichier et ce sera beau, pensais-je).
image
Copiez rapidement le code, exécutez-le. J'ai une erreur. Je comprends. Il s’est avéré que j’avais un vieux gnuplot ( Version 5.0 patchlevel 3 last modified 2016-02-21) et ce n’est pas le cas.

Connaissant la flexibilité de gnuplot, il a commencé à fouiller sur le World Wide Web et est tombé sur plusieurs exemples appropriés sur stackoverflow ( Double axe x sur un graphique d'araignée avec Gnuplot et Comment créer un graphique d'araignée dans Gnuplot? ) Et Github ( gnuplot-radarchart ). Ils sont devenus le point de départ.

De plus, mes manipulations avec les commandes ont conduit à ce qui suit:

0) Désactiver les bordures
unset border

1) Créez 4 lignes zéro - 2 principales et 2 supplémentaires:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Quelques mots sur les lignes zéro dans la documentation . Cette opération vous permet de réduire l'axe au centre de l'image. Et d'autres sont nécessaires pour afficher des graduations positives sur eux.

2) Configurer l'affichage des ticks sur les axes:
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            

Avec des graduations sur les axes de réglages un peu plus.
axis- où les tiques seront situées, sur l'axe ou (frontière - sur la frontière).
Pour un axe xqui va vers la droite 0,.5,max. Le premier nombre est l'origine, le second est le pas, le troisième est la fin du compte. Pour le premier de 0, et pour le reste de 0.5, afin que les zéros n'interfèrent pas à l'origine.

Mélange de zéros au centre des coordonnéesPas de décalage
Mélange de zéros au centre des coordonnées.
Tous les intervalles sont *ticsconfigurés comme0,.5,max
Sans offset 0.35pourxtics

Le paramètre scale 0.5,0.25 mirror ajoute des empattements à l'axe. Si vous jouez avec les chiffres, leur taille changera.
J'introduis également des variables max, minavec lesquelles je contrôle les limites des axes du graphe.
Pour plus d'informations sur la définition des ticks, consultez la documentation dans la section Xtics .

3) Configurer les plages d'axes:
set xrange  [ min : max ] 
set yrange  [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]

Il est à noter que 2 axes commencent à compter à partir de l' minaugmentation et 2 axes à partir maxde la diminution.
Voir la section Xrange pour plus d'informations .

4) Nous donnons des noms aux axes et les plaçons bien:
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) Nous formons les données d'
entrée.Chaque colonne a 2 colonnes. Numéro de ligne - numéro d'axe, cinquième ligne pour fermer la boucle. Colonne impaire - coordonnée x, même - y. Du fait que tous les points sont situés sur les axes, l'un d'une paire (x, y)est toujours égal à zéro.
Malgré le fait que les 4 axes soient positifs, certaines données sont artificiellement déplacées vers la moitié négative, car elles sont situées sur les axes principaux xet 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 #  

Résultat
Total
Code 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


All Articles