ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π½Π°Π΄ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΡΡΠ°ΡΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΠΌΠ΅ΡΡ 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
β Π³Π΄Π΅ Π±ΡΠ΄ΡΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ ΡΠΈΠΊΠΈ, Π½Π° ΠΎΡΠΈ ΠΈΠ»ΠΈ (border β Π½Π° Π³ΡΠ°Π½ΠΈΡΠ΅).
ΠΠ»Ρ ΠΎΡΠΈ 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
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com