Laborante pri datuma bildigo por artikolo, fariĝis necese havi 4 aksojn kun pozitivaj etikedoj sur ĉiuj.
Kiel ĉe aliaj grafikaĵoj en la artikolo, mi decidis uzi gnuplot. Antaŭ ĉio, mi rigardis la oficialan retejon, kie estas multaj ekzemploj. Mi estis tre feliĉa kiam mi trovis la ĝustan
Mi rapide kopiis la kodon kaj kuris ĝin. Mi ricevas eraron. Mi eltrovas ĝin. Montriĝis, ke mi havas malnovan gnuploton (Version 5.0 patchlevel 3 last modified 2016-02-21
) kaj li ne povas fari tion.
Sciante pri la fleksebleco de gnuplot, mi komencis traserĉi la Tutmondan Reton kaj trovis plurajn taŭgajn ekzemplojn pri stackoverflow (
Plue, miaj manipuladoj kun la komandoj kondukis al la sekvanta:
0) Malebligu
unset border
1) Kreu 4 nulliniojn - 2 ĉefajn kaj 2 pliajn:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Kelkaj vortoj pri nul linioj en
2) Agordu la montradon de iksodoj sur la aksoj:
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
Kun iksodoj sur la aksoj estas iom pli da agordoj.
axis
- kie la iksodoj troviĝos, sur la akso aŭ (bordo - sur la limo).
Por akso x
, kiu iras dekstren 0,.5,max
. La unua numero estas la komenco de la retronombrado, la dua estas la paŝo, la tria estas la fino de la retronombrado. Por la unua de 0
, kaj por la resto de 0.5
, tiel ke la nuloj ne malhelpas la originon.
Miksado de nuloj ĉe la koordinata centro.
Ĉiuj intervaloj *tics
agordita kiel 0,.5,max
Sen offset 0.35
por xtics
alĝustigo scale 0.5,0.25 mirror
aldonas noĉojn al la akso. Se vi ludas kun la nombroj, ilia grandeco ŝanĝiĝos.
Mi ankaŭ enigas variablojn max, min
, per kies helpo mi regas la limojn de la grafeaksoj.
Pliaj informoj pri agordo de tikoj troveblas en la dokumentado en la sekcio
3) Agordu aksajn gamojn:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Oni notu ĉi tie, ke la 2 aksoj komenciĝas de min
por pligrandigo kaj 2 aksoj - kun max
malpliiĝi.
Pliaj informoj en la sekcio
4) Donu nomojn al la aksoj kaj metu ilin bele:
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) Formante la enigajn datumojn
Ĉiu grafikaĵo havas 2 kolumnojn. Linia nombro - aksa nombro, kvina linio por fermi la buklon. Nepara kolumno - koordinato x
, eĉ - y
. Pro la fakto, ke ĉiuj punktoj situas sur la aksoj, tiam de la paro (x, y)
unu estas ĉiam nulo.
Eĉ se ĉiuj 4 aksoj estas pozitivaj, iuj datumoj estas artefarite movitaj al la negativa duono ĉar ĝi situas sur la ĉefaj aksoj. 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 #Дубликат первой точки
rezulto
Plena kodo
#!/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
fonto: www.habr.com