
Bei der Arbeit an der Visualisierung von Daten für den Artikel entstand die Notwendigkeit, 4 Achsen mit positiven Beschriftungen auf allen zu haben.
Wie bei anderen Diagrammen des Artikels entschied ich mich für die Verwendung von gnuplot. Zunächst schaute ich auf die offizielle Website, wo es viele Beispiele gibt. Ich war sehr erfreut, als ich das benötigte entdeckte (ein wenig mit der Feile arbeiten, und es wird schön, dachte ich).

Ich kopierte schnell den Code, starte ihn. Ich erhalte einen Fehler. Ich untersuche es. Es stellte sich heraus, dass ich eine ältere Version von gnuplot habe (Version 5.0 Patchlevel 3, zuletzt geändert am 21.02.2016) und es so nicht kann.
In Anbetracht der Flexibilität von gnuplot begann ich, die Weiten des weltweiten Webs zu durchforsten, und stieß auf mehrere passende Beispiele auf Stackoverflow ( und ) und GitHub (). Sie wurden zum Ausgangspunkt.
Danach führten meine Manipulationen mit den Befehlen zu Folgendem:
0) Grenzen entfernen
1) Erstellen von 4 Null-Linien — 2 Haupt- und 2 zusätzliche:
set xzeroaxis set yzeroaxis set x2zeroaxis set y2zeroaxis
Ein paar Worte zu Null-Linien in
. Diese Operation ermöglicht es, die Achsen ins Zentrum der Abbildung zu bringen. Die zusätzlichen sind nötig, um darauf positive Ticks anzuzeigen. 2) Wir passen die Anzeige der Ticks auf den Achsen an:
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
Bei den Ticks auf den Achsen gibt es etwas mehr Einstellungen.
axis
— wo die Ticks sich befinden werden, auf der Achse oder (border — an der Grenze). Für die Achse
, die nach rechts geht x0,.5,max . Die erste Zahl ist der Beginn der Zählung, die zweite der Schritt, die dritte das Ende der Zählung. Für die erste von, aber für die anderen von 0, damit sich die Nullen nicht am Anfang der Koordinaten störten. 0.5Einmischung der Nullen im Koordinatenzentrum.


Alle Intervalle
*tics sind so eingestellt wie Ohne . Die erste Zahl ist der Beginn der Zählung, die zweite der Schritt, die dritte das Ende der Zählung. Für die erste von
offset 0.35 xtics für scale 0.5,0.25 mirror
Einstellungen fügt Striche auf die Achse hinzu. Wenn man mit den Zahlen spielt, ändert sich deren Größe. Ich führe auch die Variablen ein
max, min , mit denen ich die Grenzen der Achsen des Diagramms steuere.Zusätzliche Informationen zur Tick-Einstellung finden Sie in der Dokumentation im Abschnitt
Xtics .
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 min max max Zusätzliche Informationen im Abschnitt
Xrange .
4) Wir benennen die Achsen und gestalten 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) Eingabedaten erstellen
Für jedes Diagramm sind 2 Spalten vorgesehen. Die Zeilennummer entspricht der Achsennummer, die fünfte Zeile zum Schließen der 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, weil 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 Punktes
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
Quelle: habr.com
