gnuplot 5.0. Spiderplot sur 4 axes faites-le vous-même

gnuplot 5.0. Spiderplot sur 4 axes faites-le vous-même
En travaillant sur la visualisation de données pour un article, il est devenu nécessaire d'avoir 4 axes avec des étiquettes positives sur chacun d'eux.

Comme pour les autres graphiques de l'article, j'ai décidé d'utiliser gnuplot. Tout d'abord, j'ai regardé le site officiel, où il y a beaucoup d'exemples. J'étais très heureux quand j'ai trouvé le bon. exemple (Je ne travaillerai pas beaucoup avec un fichier et ce sera beau, je pensais).
gnuplot 5.0. Spiderplot sur 4 axes faites-le vous-même
Copiez rapidement le code, exécutez. J'obtiens une erreur. Je comprends. Il s'est avéré que j'ai un vieux gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) et il ne sait pas comment.

Connaissant la flexibilité de gnuplot, j'ai commencé à fouiller dans le monde entier et suis tombé sur des exemples pertinents sur stackoverflow (Double axe des abscisses sur un graphique en araignée avec Gnuplot и Comment créer un graphique en araignée dans Gnuplot ?) et github (gnuplot-radarchart). Ils sont devenus le point de départ.

De plus, mes manipulations avec les commandes ont donné les résultats suivants :

0) Désactiver les limites

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 documentation. Cette opération permet de ramener les axes au centre de la figure. Et d'autres sont nécessaires pour afficher des ticks positifs sur eux.

2) Paramétrer 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 coches sur les axes, il y a un peu plus de réglages.
axis - où les tiques seront situées, sur l'axe ou (bordure - sur la bordure).
Pour axe x, qui va vers la droite 0,.5,max. Le premier nombre est le début du décompte, le second est le pas, le troisième est la fin du décompte. Pour le premier de 0, et pour le reste de 0.5pour que les zéros n'interfèrent pas à l'origine.

gnuplot 5.0. Spiderplot sur 4 axes faites-le vous-même
gnuplot 5.0. Spiderplot sur 4 axes faites-le vous-même

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

réglage scale 0.5,0.25 mirror ajoute des empattements à l'axe. Si vous jouez avec les nombres, leur taille changera.
J'introduis aussi des variables max, min, à l'aide duquel je contrôle les limites des axes du graphique.
Des informations supplémentaires sur la configuration des ticks sont disponibles dans la documentation de la section Xtiques.

3) Configurez les plages des axes :

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

Il faut noter ici que les 2 axes partent de min pour grossissement et 2 axes - avec max diminuer.
Informations complémentaires dans la rubrique Gamme X.

4) Nous donnons des noms aux axes et les plaçons joliment :

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 graphique comporte 2 colonnes. Numéro de ligne - numéro d'axe, cinquième ligne pour fermer le contour. Colonne impaire - coordonnée x, même - y. Compte tenu du fait que tous les points sont situés sur les axes, puis de la paire (x, y) un vaut toujours zéro.
Même si les 4 axes sont positifs, certaines données sont artificiellement décalées vers la moitié négative car elles se trouvent sur les axes principaux 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 #Дубликат первой точки

Résultat
gnuplot 5.0. Spiderplot sur 4 axes faites-le vous-même
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

Ajouter un commentaire