Gnuplot 5.0. Spiderplot auf 4 Achsen selbst gemacht

Gnuplot 5.0. Spiderplot auf 4 Achsen selbst gemacht
Bei der Erstellung der Datenvisualisierung für den Artikel ergab sich die Notwendigkeit, 4 Achsen mit positiven Markierungen anzuzeigen.

Wie bei anderen Diagrammen des Artikels entschied ich mich dafür, gnuplotzu verwenden. Zuerst schaute ich auf die offizielle Website, die viele Beispiele bietet. Ich war sehr erfreut, als ich ein passendes Beispiel fand Nummer 00 oder (ein bisschen Nachbearbeitung und es wird schön aussehen, dachte ich mir).
Gnuplot 5.0. Spiderplot auf 4 Achsen selbst gemacht
Ich kopierte schnell den Code und startete ihn. Ich erhielt einen Fehler. Nach einigem Nachdenken stellte sich heraus, dass ich eine ältere Version von gnuplot hatte (Version 5.0 patchlevel 3, zuletzt geändert am 21.02.2016) und es diese Funktion nicht unterstützt.

Wissend um die Flexibilität von gnuplot, begann ich im World Wide Web zu recherchieren und stieß auf einige passende Beispiele auf Stack Overflow (Doppelte x-Achse auf einem Spinnendiagramm mit Gnuplot und Wie erstellt man ein Spinnendiagramm in Gnuplot?) und GitHub (gnuplot-radarchart). Diese wurden zu meinem Ausgangspunkt.

Danach führten meine Manipulationen mit den Befehlen zu Folgendem:

0) Wir deaktivieren die Grenzen

unset border

1) Wir erstellen 4 Null-Linien – 2 Hauptlinien und 2 zusätzliche:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Ein paar Worte zu den Null-Linien in Dokumentation.. Diese Operation bringt die Achsen ins Zentrum der Abbildung. Die zusätzlichen sind nötig, um positive Ticks anzuzeigen.

2) Wir konfigurieren die Anzeige der Ticks auf den Achsen:

max = 1,5 # Für Flexibilität
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            

Die Einstellungen der Ticks auf den Achsen sind etwas umfangreicher.
Achse — wo sich die Ticks befinden, auf der Achse oder (border — an der Grenze).
Für die Achse x, die nach rechts verläuft 0,.5,max. Die erste Zahl ist der Startpunkt, die zweite der Schritt, die dritte das Ende. Für die erste von 0, für die anderen von 0.5, damit die Nullen am Ursprung nicht stören.

Gnuplot 5.0. Spiderplot auf 4 Achsen selbst gemacht
Gnuplot 5.0. Spiderplot auf 4 Achsen selbst gemacht

Die Vermischung von Nullen im Ursprung.
Alle Intervalle *tics sind eingestellt wie 0,.5,max
Ohne offset 0.35 für xtics

Konfiguration scale 0.5,0.25 mirror fügt Markierungen zur Achse hinzu. Wenn man mit den Zahlen spielt, ändert sich ihre Größe.
Ich verwende auch Variablen max, min, mit denen ich die Grenzen der Grafikachsen steuere.
Weitere Informationen zu den Tick-Einstellungen finden Sie in der Dokumentation im Abschnitt Xtics.

3) Wir konfigurieren die Bereiche der Achsen:

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

Hier ist zu beachten, dass 2 Achsen von min im Zuwachs und 2 Achsen — von max im Abfall beginnen.
Weitere Informationen im Abschnitt Xrange.

4) Wir benennen die Achsen und platzieren sie ansprechend:

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 bereiten die Eingabedaten vor
Jeder Graph hat 2 Spalten. Die Zeilennummer ist die Nummer der Achse, die fünfte Zeile schließt die Kontur. Die ungerade Spalte ist die Koordinate x, die gerade — y. Da sich alle Punkte auf den Achsen befinden, ist aus dem Paar (x, y) eine immer gleich null.
Obwohl alle 4 Achsen positiv sind, werden einige Daten künstlich in die negative Hälfte verschoben, da sie auf den Hauptachsen liegen x und 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 #Duplikat des ersten Punkts

Ergebnis
Gnuplot 5.0. Spiderplot auf 4 Achsen selbst gemacht
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

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster