Gnuplot 5.0. Spiderplot Π½Π° 4 оси своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ

Gnuplot 5.0. Spiderplot Π½Π° 4 оси своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ
ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°Π΄ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… для ΡΡ‚Π°Ρ‚ΡŒΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Ρ‚ΡŒ 4 оси с ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ Π½Π° всСх.

Как ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΡΡ‚Π°Ρ‚ΡŒΠΈ, я Ρ€Π΅ΡˆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ gnuplot. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ заглянул Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт, Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ мноТСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². ΠžΡ‡Π΅Π½ΡŒ порадовался, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°ΡŽ напильником ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ красиво, ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» я).
Gnuplot 5.0. Spiderplot Π½Π° 4 оси своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ
Π‘Ρ‹ΡΡ‚Ρ€Π΅Π½ΡŒΠΊΠΎ скопировал ΠΊΠΎΠ΄, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ. ΠŸΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π Π°Π·Π±ΠΈΡ€Π°ΡŽΡΡŒ. Оказалось, Ρ‡Ρ‚ΠΎ Ρƒ мСня ΡΡ‚Π°Ρ€Π΅Π½ΡŒΠΊΠΈΠΉ gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21) ΠΈ ΠΎΠ½ Ρ‚Π°ΠΊ Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚.

Зная ΠΎ гибкости gnuplot, Π½Π°Ρ‡Π°Π» ΡˆΠ°Ρ€ΠΈΡ‚ΡŒ просторы всСмирной ΠΏΠ°ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΈ наткнулся Π½Π° нСсколько подходящих ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π½Π° stackoverflow (Double x-axis on a spider plot with Gnuplot ΠΈ 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

ΠŸΠ°Ρ€Π° слов ΠΎ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… линиях Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Данная опСрация позволяСт свСсти оси Π² Ρ†Π΅Π½Ρ‚Ρ€ рисунка. А Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° Π½ΠΈΡ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΊΠΈ.

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 Π½Π° 4 оси своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ
Gnuplot 5.0. Spiderplot Π½Π° 4 оси своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ

БмСшиваниС Π½ΡƒΠ»Π΅ΠΉ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.
ВсС ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ *tics настроСны ΠΊΠ°ΠΊ 0,.5,max
Π‘Π΅Π· offset 0.35 для xtics

Настройка 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) Π”Π°Π΅ΠΌ осям ΠΈΠΌΠ΅Π½Π° ΠΈ красиво ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ:

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 #Π”ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
Gnuplot 5.0. Spiderplot Π½Π° 4 оси своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ
ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

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

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com