Gnuplot 5.0. Spiderplot sur 4 axes fait maison

Gnuplot 5.0. Spiderplot sur 4 axes fait maison
Lors de la visualisation des données pour l'article, il est devenu nécessaire d'avoir 4 axes avec des étiquettes positives sur tous.

Comme pour les autres graphes de l'article, j'ai décidé d'utiliser gnuplot. J'ai d'abord jeté un coup d'œil sur le site officiel, où il y a de nombreux exemples. J'étais très heureux de découvrir celui dont j'avais besoin exemple (je vais juste travailler un peu avec une lime et ce sera joli, me suis-je dit).
Gnuplot 5.0. Spiderplot sur 4 axes fait maison
J'ai rapidement copié le code, je le lance. J'obtiens une erreur. Je me penche sur le problème. Il s'est avéré que j'avais une vieille version de gnuplot (Version 5.0 patchlevel 3 date de modification 2016-02-21) et il ne peut pas faire ça.

Sachant la flexibilité de gnuplot, j'ai commencé à fouiller dans les profondeurs du web et j'ai trouvé quelques exemples adaptés sur stackoverflow (Double x-axis on a spider plot with Gnuplot et How to Create a Spider Plot in Gnuplot?) et github (gnuplot-radarchart). Ils sont devenus un point de départ.

Ensuite, mes manipulations avec les commandes ont donné ceci :

0) Désactivez les bordures

unset border

1) Créons 4 lignes nulles — 2 principales et 2 supplémentaires :

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Quelques mots sur les lignes nulles dans documentation. Cette opération permet de ramener les axes au centre du dessin. Les supplémentaires sont nécessaires pour afficher les marques positives.

2) Configurer l'affichage des marques sur les axes :

max = 1.5 # Pour la flexibilité
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            

Il y a un peu plus de paramètres à régler pour les marques sur les axes.
axis — où les marques seront-elles situées, sur l'axe ou (bordure — à la frontière).
Pour l'axe x, qui se dirige vers la droite 0,.5,max. Le premier chiffre est le début du compte, le deuxième est l'incrément, le troisième est la fin du compte. Pour le premier depuis 0, et pour les autres depuis 0.5, afin que les zéros ne gênent pas au début des coordonnées.

Gnuplot 5.0. Spiderplot sur 4 axes fait maison
Gnuplot 5.0. Spiderplot sur 4 axes fait maison

Mélanger les zéros au centre des coordonnées.
Tous les intervalles *tics sont configurés comme 0,.5,max
Sans offset 0.35 pour xtics

Configuration scale 0.5,0.25 mirror ajoute des marques sur l'axe. En jouant avec les chiffres, leur taille variera.
Je définis également des variables max, min, que j'utilise pour contrôler les limites des axes du graphique.
Des informations supplémentaires sur la configuration des marques se trouvent dans la documentation à la section Xtics.

3) Configurer les plages des axes :

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

Il convient de noter que 2 axes commencent leur compte depuis min en augmentation et 2 axes — depuis max en diminution.
Des informations supplémentaires se trouvent dans la section Xrange.

4) Donnons des noms aux axes et plaçons-les de manière esthétique :

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) Formons les données d'entrée
Chaque graphique dispose de 2 colonnes. Le numéro de ligne représente le numéro de l'axe, la cinquième ligne pour fermer le contour. La colonne impaire est la coordonnée x, la paire est y. Étant donné que tous les points se trouvent sur les axes, l'une des paires (x, y) est toujours égale à zéro.
Bien que tous les 4 axes soient positifs, certaines données sont artificiellement déplacées vers la moitié négative, car elles se trouvent sur les axes principaux. x et 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 #Duplication du premier point

Résultat
Gnuplot 5.0. Spiderplot sur 4 axes fait maison
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

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster