Þegar unnið var að gagnasýn fyrir grein varð nauðsynlegt að hafa 4 ása með jákvæðum merkjum á öllum.
Eins og með önnur línurit í greininni ákvað ég að nota gnuplot. Fyrst af öllu leit ég á opinberu vefsíðuna þar sem mörg dæmi eru til. Ég var mjög ánægður þegar ég fann þann rétta
Ég afritaði kóðann fljótt og hljóp hann. Ég fæ villu. Ég er að átta mig á því. Það kom í ljós að ég er með gamlan gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21
) og hann getur það ekki.
Þegar ég vissi um sveigjanleika gnuplot byrjaði ég að skoða veraldarvefinn og rakst á nokkur hentug dæmi um stackoverflow (
Ennfremur leiddu meðhöndlun mín með skipunum til eftirfarandi:
0) Slökkva
unset border
1) Búðu til 4 núlllínur - 2 aðal og 2 til viðbótar:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Nokkur orð um núll línur inn
2) Settu upp skjáinn á merkjum á ásunum:
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
Með merkjum á ásunum eru aðeins fleiri stillingar.
axis
- hvar merkingarnar verða staðsettar, á ásnum eða (landamæri - á mörkum).
Fyrir ás x
, sem fer til hægri 0,.5,max
. Fyrsta talan er upphaf niðurtalningarinnar, önnur er skrefið, þriðja er lok niðurtalningarinnar. Fyrir fyrsta frá 0
, og fyrir rest frá 0.5
, svo að núllin trufli ekki upprunann.
Blöndun núll við hnitamiðju.
Öll millibili *tics
stillt sem 0,.5,max
Án offset 0.35
í xtics
aðlögun scale 0.5,0.25 mirror
bætir hak við ásinn. Ef þú spilar með tölurnar breytist stærð þeirra.
Ég set líka inn breytur max, min
, með hjálp sem ég stjórna mörkum grafásanna.
Frekari upplýsingar um að setja merkingar er að finna í skjölunum í kaflanum
3) Settu upp ássvið:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Hér skal tekið fram að 2 ásarnir byrja frá min
fyrir stækkun og 2 ása - með max
að minnka.
Viðbótarupplýsingar í kaflanum
4) Gefðu ásunum nöfn og settu þær fallega:
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) Að mynda inntaksgögnin
Hvert línurit hefur 2 dálka. Línunúmer - ásnúmer, fimmta lína til að loka lykkjunni. Oddur dálkur - hnit x
, jafnvel - y
. Vegna þess að allir punktar eru staðsettir á ásunum, þá frá parinu (x, y)
einn er alltaf núll.
Jafnvel þó að allir 4 ásarnir séu jákvæðir eru sum gögn færð tilbúnar í neikvæða helminginn vegna þess að þau eru staðsett á aðalásunum 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 #Дубликат первой точки
Niðurstaðan
Fullur kóði
#!/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
Heimild: www.habr.com