Όταν εργάζεστε στην οπτικοποίηση δεδομένων για ένα άρθρο, κατέστη απαραίτητο να υπάρχουν 4 άξονες με θετικές ετικέτες σε όλους.
Όπως και με άλλα γραφήματα στο άρθρο, αποφάσισα να χρησιμοποιήσω gnuplot. Πρώτα απ 'όλα, κοίταξα τον επίσημο ιστότοπο, όπου υπάρχουν πολλά παραδείγματα. Χάρηκα πολύ όταν βρήκα το κατάλληλο
Αντέγραψα γρήγορα τον κώδικα και τον έτρεξα. Λαμβάνω ένα σφάλμα. Το ανακαλύπτω. Αποδείχθηκε ότι έχω ένα παλιό gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21
) και δεν μπορεί να το κάνει.
Γνωρίζοντας για την ευελιξία του gnuplot, άρχισα να ψάχνω τον Παγκόσμιο Ιστό και βρήκα αρκετά κατάλληλα παραδείγματα σχετικά με το stackoverflow (
Περαιτέρω, οι χειρισμοί μου με τις εντολές οδήγησαν στα εξής:
0) Απενεργοποίηση
unset border
1) Δημιουργήστε 4 μηδενικές γραμμές - 2 κύριες και 2 πρόσθετες:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Λίγα λόγια για τις μηδενικές γραμμές
2) Ρυθμίστε την εμφάνιση των κροτώνων στους άξονες:
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
Με τσιμπούρια στους άξονες υπάρχουν λίγο περισσότερες ρυθμίσεις.
axis
- όπου θα βρίσκονται τα τσιμπούρια, στον άξονα ή (σύνορα - στα σύνορα).
Για άξονα x
, που πηγαίνει προς τα δεξιά 0,.5,max
. Ο πρώτος αριθμός είναι η έναρξη της αντίστροφης μέτρησης, ο δεύτερος είναι το βήμα, ο τρίτος είναι το τέλος της αντίστροφης μέτρησης. Για το πρώτο από 0
, και για τα υπόλοιπα από 0.5
, ώστε τα μηδενικά να μην παρεμβαίνουν στην προέλευση.
Ανάμειξη μηδενικών στο κέντρο συντεταγμένων.
Όλα τα διαστήματα *tics
διαμορφώθηκε ως 0,.5,max
χωρίς offset 0.35
για xtics
προσαρμογή scale 0.5,0.25 mirror
προσθέτει εγκοπές στον άξονα. Αν παίξετε με τους αριθμούς, το μέγεθός τους θα αλλάξει.
Εισάγω και μεταβλητές max, min
, με τη βοήθεια του οποίου ελέγχω τα όρια των αξόνων του γραφήματος.
Πρόσθετες πληροφορίες σχετικά με τη ρύθμιση των τικ μπορείτε να βρείτε στην τεκμηρίωση της ενότητας
3) Ρύθμιση εύρους αξόνων:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Να σημειωθεί εδώ ότι οι 2 άξονες ξεκινούν από min
για μεγέθυνση και 2 άξονες - με max
μειώνω.
Πρόσθετες πληροφορίες στην ενότητα
4) Δώστε ονόματα στους άξονες και τοποθετήστε τους όμορφα:
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) Σχηματισμός των δεδομένων εισόδου
Κάθε γράφημα έχει 2 στήλες. Αριθμός γραμμής - αριθμός άξονα, πέμπτη γραμμή για το κλείσιμο του βρόχου. Μονή στήλη - συντεταγμένη x
, ακόμη και - y
. Λόγω του γεγονότος ότι όλα τα σημεία βρίσκονται στους άξονες, στη συνέχεια από το ζεύγος (x, y)
το ένα είναι πάντα μηδέν.
Παρόλο που και οι 4 άξονες είναι θετικοί, ορισμένα δεδομένα μετακινούνται τεχνητά στο αρνητικό μισό επειδή βρίσκονται στους κύριους άξονες x
и 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 #Дубликат первой точки
Αποτέλεσμα
Πλήρης κωδικός
#!/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
Πηγή: www.habr.com