Gnuplot 5.0. Spiderplot na 4 osih s svojimi rokami

Gnuplot 5.0. Spiderplot na 4 osih s svojimi rokami
При работе над визуализацией данных для статьи возникла необходимость иметь 4 оси с положительными метками на всех.

Как и для других графиков статьи, я решил использовать gnuplot. Первым делом заглянул на официальный сайт, где есть множество примеров. Очень порадовался, когда обнаружил нужный primer (не много поработаю напильником и будет красиво, подумал я).
Gnuplot 5.0. Spiderplot na 4 osih s svojimi rokami
Быстренько скопировал код, запускаю. Получаю ошибку. Разбираюсь. Оказалось, что у меня старенький gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) и он так не умеет.

Зная о гибкости gnuplot, начал шарить просторы всемирной паутины и наткнулся на несколько подходящих примеров на stackoverflow (Double x-axis on a spider plot with Gnuplot in How to Create a Spider Plot in Gnuplot?) и github (gnuplot-radarchart). Они стали отправной точкой.

Далее, мои манипуляции с командами привели к следующему:

0) Отключаем границы

unset border

1) Создаем 4 нулевых линии — 2 основных и 2 дополнительных:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

Пара слов о нулевых линиях в dokumenti. Данная операция позволяет свести оси в центр рисунка. А дополнительные нужны, чтобы на них отображать положительные тики.

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 — где будут находиться тики, на оси или (border — на границе).
Для оси x, которая уходит вправо 0,.5,max. Первое число — начало отсчета, второе — шаг, третье — конец отсчета. Для первой от 0, а для остальных от 0.5, чтобы нули не мешались в начале координат.

Gnuplot 5.0. Spiderplot na 4 osih s svojimi rokami
Gnuplot 5.0. Spiderplot na 4 osih s svojimi rokami

Смешивание нулей в центре координат.
Все интервалы *tics настроены как 0,.5,max
Без offset 0.35 za xtics

Setup scale 0.5,0.25 mirror добавляет засечки на ось. Если поиграться с числами, то будет меняться их размер.
Также ввожу переменные max, min, с помощью которых управляю границами осей графика.
Дополнительную информацию по настройке тиков можно найти в документации в разделе Xtics.

3) Настраиваем диапазоны осей:

set xrange  [ min : max ] 
set yrange  [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]

Здесь следует отметить, что 2 оси начинают отсчет от min на увеличение и 2 оси — с max на уменьшение.
Дополнительная информация в разделе Xrange.

4) Imenovanje osov in njihovo estetsko postavitev:

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) Oblikovanje vhodnih podatkov
Za vsak graf je namenjenih 2 stolpcev. Številka vrstice — številka osi, peta vrstica, da zaključi konturo. Liha kolona — koordinata x, sode — y. Glede na to, da so vse točke razporejene na osih, je v paru (x, y) ena vedno enaka nič.
Kljub temu, da so vse 4 osi pozitivne, se nekateri podatki namerno premikajo na negativno polovico, ker so na glavnih osah x in 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 #Dupletna točka prve točke

Результат.
Gnuplot 5.0. Spiderplot na 4 osih s svojimi rokami
Celotna koda

#!/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

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster