Podczas pracy nad wizualizacją danych dla artykułu konieczne stało się posiadanie 4 osi z dodatnimi etykietami na wszystkich.
Podobnie jak w przypadku innych wykresów w artykule, zdecydowałem się skorzystać gnuplot. Przede wszystkim zajrzałem na oficjalną stronę internetową, gdzie jest wiele przykładów. Byłem bardzo szczęśliwy, gdy znalazłem ten właściwy
Szybko skopiowałem kod i uruchomiłem go. Dostaję błąd. Zastanawiam się nad tym. Okazało się, że mam stary gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21
) i nie może tego zrobić.
Wiedząc o elastyczności gnuplot, zacząłem przeszukiwać sieć WWW i natknąłem się na kilka odpowiednich przykładów na temat przepełnienia stosu (
Co więcej, moje manipulacje poleceniami doprowadziły do następujących sytuacji:
0) Wyłącz
unset border
1) Utwórz 4 linie zerowe - 2 główne i 2 dodatkowe:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Kilka słów o zerowych liniach
2) Skonfiguruj wyświetlanie znaczników na osiach:
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
Dzięki znacznikom na osiach jest trochę więcej ustawień.
axis
- gdzie będą znajdować się kleszcze, na osi lub (granica - na granicy).
Dla osi x
, który idzie w prawo 0,.5,max
. Pierwsza liczba to początek odliczania, druga to krok, trzecia to koniec odliczania. Dla pierwszego od 0
, a dla reszty od 0.5
, tak aby zera nie kolidowały z początkiem.
Mieszanie zer w środku współrzędnych.
Wszystkie interwały *tics
skonfigurowany jako 0,.5,max
Bez offset 0.35
dla xtics
regulacja scale 0.5,0.25 mirror
dodaje nacięcia na osi. Jeśli pobawisz się liczbami, ich rozmiar ulegnie zmianie.
Wprowadzam także zmienne max, min
, za pomocą którego kontroluję granice osi wykresu.
Dodatkowe informacje na temat ustawiania znaczników można znaleźć w dokumentacji w dziale
3) Ustaw zakresy osi:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Należy tutaj zauważyć, że 2 osie zaczynają się od min
dla powiększenia i 2 osi - z max
zmniejszyć.
Dodatkowe informacje w dziale
4) Nadaj osiom nazwy i pięknie je umieść:
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) Formowanie danych wejściowych
Każdy wykres ma 2 kolumny. Numer linii - numer osi, piąta linia do zamknięcia pętli. Nieparzysta kolumna - współrzędna x
, nawet - y
. Z uwagi na to, że wszystkie punkty znajdują się na osiach, to z pary (x, y)
jeden jest zawsze zerem.
Mimo że wszystkie 4 osie są dodatnie, część danych jest sztucznie przenoszona do połowy ujemnej, ponieważ znajduje się ona na osiach głównych 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 #Дубликат первой точки
Doświadcz mocnych i skutecznych rezultatów
Pełny kod
#!/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
Źródło: www.habr.com