Kapag nagtatrabaho sa visualization ng data para sa isang artikulo, naging kinakailangan na magkaroon ng 4 na axes na may mga positibong label sa lahat.
Tulad ng iba pang mga graph sa artikulo, nagpasya akong gamitin gnplot. Una sa lahat, tiningnan ko ang opisyal na website, kung saan maraming mga halimbawa. Tuwang-tuwa ako nang mahanap ko ang tama
Mabilis kong kinopya ang code at pinatakbo ito. Nakakakuha ako ng error. Pinag-iisipan ko na. Ito pala ay mayroon akong isang lumang gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21
) at hindi niya magagawa iyon.
Dahil alam ko ang flexibility ng gnuplot, sinimulan kong saliksikin ang World Wide Web at nakatagpo ako ng ilang angkop na halimbawa sa stackoverflow (
Dagdag pa, ang aking mga pagmamanipula sa mga utos ay humantong sa mga sumusunod:
0) Huwag paganahin
unset border
1) Lumikha ng 4 na zero na linya - 2 pangunahing at 2 karagdagang:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Ilang salita tungkol sa zero lines in
2) I-set up ang pagpapakita ng mga tik sa mga palakol:
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
Sa mga ticks sa axes mayroong kaunti pang mga setting.
axis
- kung saan matatagpuan ang mga ticks, sa axis o (hangganan - sa hangganan).
Para sa axis x
, na papunta sa kanan 0,.5,max
. Ang unang numero ay ang simula ng countdown, ang pangalawa ay ang hakbang, ang pangatlo ay ang pagtatapos ng countdown. Para sa unang mula sa 0
, at para sa iba mula sa 0.5
, upang ang mga zero ay hindi makagambala sa pinagmulan.
Paghahalo ng mga zero sa coordinate center.
Lahat ng agwat *tics
naka-configure bilang 0,.5,max
ΠΠ΅Π· offset 0.35
para sa xtics
pag-aayos scale 0.5,0.25 mirror
nagdaragdag ng mga bingaw sa axis. Kung laruin mo ang mga numero, magbabago ang laki nito.
Naglalagay din ako ng mga variable max, min
, sa tulong kung saan kinokontrol ko ang mga hangganan ng mga graph axes.
Ang karagdagang impormasyon sa pagtatakda ng mga tik ay matatagpuan sa dokumentasyon sa seksyon
3) I-set up ang mga saklaw ng axis:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Dapat pansinin dito na ang 2 axes ay nagsisimula sa min
para sa magnification at 2 axes - may max
upang mabawasan.
Karagdagang impormasyon sa seksyon
4) Bigyan ng mga pangalan ang mga palakol at ilagay ang mga ito nang maganda:
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) Pagbubuo ng input data
Ang bawat graph ay may 2 column. Numero ng linya - numero ng axis, ikalimang linya upang isara ang loop. Kakaibang hanay - coordinate x
, kahit - y
. Dahil sa ang katunayan na ang lahat ng mga punto ay matatagpuan sa mga palakol, pagkatapos ay mula sa pares (x, y)
ang isa ay palaging zero.
Kahit na ang lahat ng 4 na ax ay positibo, ang ilang data ay artipisyal na inilipat sa negatibong kalahati dahil ito ay matatagpuan sa mga pangunahing axes 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 #ΠΡΠ±Π»ΠΈΠΊΠ°Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠΎΡΠΊΠΈ
Resulta
Buong code
#!/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
Pinagmulan: www.habr.com