Gnuplot 5.0. DIY Spiderplot na 4 osiach

Gnuplot 5.0. DIY Spiderplot na 4 osiach
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 przykład (Popracuję trochę z plikiem i będzie pięknie, pomyślałem).
Gnuplot 5.0. DIY Spiderplot na 4 osiach
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 (Podwójna oś x na wykresie pająka za pomocą Gnuplot и Jak stworzyć wykres pająka w Gnuplot?) i githuba (gnuplot-radarchart). Stały się punktem wyjścia.

Co więcej, moje manipulacje poleceniami doprowadziły do ​​następujących sytuacji:

0) Wyłącz granice

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 dokumentacja. Ta operacja pozwala przenieść osie na środek obrazu. Aby wyświetlić na nich pozytywne znaczniki, potrzebne są dodatkowe.

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.

Gnuplot 5.0. DIY Spiderplot na 4 osiach
Gnuplot 5.0. DIY Spiderplot na 4 osiach

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 Xtics.

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 Xrange.

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
Gnuplot 5.0. DIY Spiderplot na 4 osiach
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

Dodaj komentarz