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).
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 ausunset 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 0
und für den Rest von 0.5
, damit die Nullen am Ursprung nicht stören.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, min
mit 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 min
Anstieg und 2 Achsen ab max
dem 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 x
und 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
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