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).
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 borduresunset 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 x
qui 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.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, min
avec 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' min
augmentation et 2 axes à partir max
de 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 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 #
Résultat
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