Gnuplot 5.0. DIY 4-Achsen Spiderplot

Bild
Bei der Datenvisualisierung für einen Artikel mussten 4 Achsen mit positiven Beschriftungen vorhanden sein.


Wie bei anderen Artikeldiagrammen habe ich mich für Gnuplot entschieden . Zunächst habe ich mir die offizielle Website angesehen, auf der es viele Beispiele gibt. Ich war sehr froh, als ich das notwendige Beispiel gefunden habe (ich werde nicht viel mit einer Datei arbeiten und es wird schön, dachte ich).
Bild
Kopieren Sie den Code schnell und führen Sie ihn aus. Ich bekomme eine Fehlermeldung. Ich verstehe. Es stellte sich heraus, dass ich einen alten Gnuplot ( Version 5.0 patchlevel 3 last modified 2016-02-21) habe und das nicht.

Da er die Flexibilität von Gnuplot kannte, begann er im World Wide Web zu stöbern und stieß auf mehrere geeignete Beispiele für Stackoverflow ( doppelte x-Achse auf einem Spinnenplot mit Gnuplot und Erstellen eines Spinnenplots in Gnuplot? ) Und Github ( Gnuplot -Radarchart ). Sie wurden zum Ausgangspunkt.

Außerdem führten meine Manipulationen mit den Befehlen zu Folgendem:

0) Schalten Sie die Ränder aus
unset border

1) Erstellen Sie 4 Nulllinien - 2 Haupt- und 2 zusätzliche:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Ein paar Worte zu den Nulllinien in der Dokumentation . Mit dieser Operation können Sie die Achse auf die Bildmitte reduzieren. Und zusätzliche werden benötigt, um positive Zecken darauf anzuzeigen.

2) Konfigurieren Sie die Anzeige von Häkchen auf den Achsen:
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            

Mit Häkchen auf den Achsen der Einstellungen etwas mehr.
axis- wo sich die Häkchen befinden, auf der Achse oder (Rand - am Rand).
Für eine Achse x, die nach rechts geht 0,.5,max. Die erste Zahl ist der Ursprung, die zweite ist der Schritt, die dritte ist das Ende der Zählung. Für das erste von 0und für den Rest von 0.5, damit die Nullen am Ursprung nicht stören.

Nullen in der Mitte der Koordinaten mischenKein Offset
Nullen in der Mitte der Koordinaten mischen.
Alle Intervalle sind *ticskonfiguriert als0,.5,max
Ohne offset 0.35fürxtics

Die Einstellung scale 0.5,0.25 mirror fügt der Achse Serifen hinzu. Wenn Sie mit Zahlen herumspielen, ändert sich deren Größe.
Ich führe auch Variablen ein, max, minmit denen ich die Grenzen der Graphenachsen steuere.
Weitere Informationen zum Setzen von Ticks finden Sie in der Dokumentation im Abschnitt Xtics .

3) Konfigurieren Sie die Achsenbereiche:
set xrange  [ min : max ] 
set yrange  [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]

Es ist zu beachten, dass 2 Achsen ab dem minAnstieg und 2 Achsen ab maxdem Abnehmen zu zählen beginnen.
Weitere Informationen finden Sie im Abschnitt Xrange .

4) Wir geben den Achsen Namen und platzieren sie schön:
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) Wir bilden die Eingabedaten
. Jede Spalte hat 2 Spalten. Zeilennummer - Achsnummer, fünfte Zeile zum Schließen der Schleife. Ungerade Spalte - Koordinate x, gerade - y. Aufgrund der Tatsache, dass sich alle Punkte auf den Achsen befinden, ist einer aus einem Paar (x, y)immer gleich Null.
Trotz der Tatsache, dass alle 4 Achsen positiv sind, werden einige Daten künstlich in die negative Hälfte verschoben, da sie sich auf den Hauptachsen xund befinden 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 #  

Ergebnis
Gesamt
Vollständiger Code
#!/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