Ved arbeid med datavisualisering for en artikkel ble det nødvendig å ha 4 akser med positive etiketter på alle.
Som med andre grafer i artikkelen, bestemte jeg meg for å bruke gnuplot. Først av alt så jeg på den offisielle nettsiden, hvor det er mange eksempler. Jeg ble veldig glad da jeg fant den rette
Jeg kopierte raskt koden og kjørte den. Jeg får en feilmelding. Jeg finner ut av det. Det viste seg at jeg har en gammel gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21
) og han kan ikke gjøre det.
Da jeg visste om fleksibiliteten til gnuplot, begynte jeg å lete rundt på World Wide Web og kom over flere passende eksempler på stackoverflow (
Videre førte mine manipulasjoner med kommandoene til følgende:
0) Deaktiver
unset border
1) Lag 4 nulllinjer - 2 hovedlinjer og 2 ekstra:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Noen få ord om null linjer inn
2) Sett opp visningen av haker på aksene:
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
Med haker på aksene er det litt flere innstillinger.
axis
- hvor flåtten vil være plassert, på aksen eller (grensen - på grensen).
For akse x
, som går til høyre 0,.5,max
. Det første tallet er starten på nedtellingen, det andre er trinnet, det tredje er slutten på nedtellingen. For den første fra 0
, og for resten fra 0.5
, slik at nullene ikke forstyrrer origo.
Blander nuller ved koordinatsenteret.
Alle intervaller *tics
konfigurert som 0,.5,max
uten offset 0.35
for xtics
justering scale 0.5,0.25 mirror
legger til hakk til aksen. Hvis du spiller med tallene, vil størrelsen deres endres.
Jeg legger også inn variabler max, min
, ved hjelp av denne kontrollerer jeg grensene til grafaksene.
Ytterligere informasjon om innsetting av hake finner du i dokumentasjonen i avsnittet
3) Sett opp akseområder:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Det skal her bemerkes at de 2 aksene starter fra min
for forstørrelse og 2 akser - med max
å redusere.
Ytterligere informasjon i avsnittet
4) Gi øksene navn og plasser dem vakkert:
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) Forming av inngangsdata
Hver graf har 2 kolonner. Linjenummer - aksenummer, femte linje for å lukke sløyfen. Odd kolonne - koordinat x
, til og med - y
. På grunn av det faktum at alle punktene er plassert på aksene, da fra paret (x, y)
en er alltid null.
Selv om alle 4 aksene er positive, flyttes noen data kunstig til den negative halvdelen fordi de er plassert på hovedaksene 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 #Дубликат первой точки
Resultat
Full kode
#!/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
Kilde: www.habr.com