Jan Sarén (jan.saren@phys.jyu.fi) Erna Kaleva (emkaleva@cc.jyu.fi) Kuvaajien piirtäminen ja sovittaminen Gnuplot-ohjelmalla Ohjelmatyö Jyväskylän yliopisto Fysiikan Laitos 25. syyskuuta 2003 Yhteenveto Tämän yksinkertaisena käyttöohjeena toimivan selostuksen on tarkoitus helpottaa kuvaajien piirtämistä ja yksinkertaista mittausaineiston käsittelyä Gnuplot-ohjelmalla. Gnuplot-ohjelma on yksinkertainen komentopohjainen kuvaajanpiirto-ohjelma, jolla voidaan sovittaa myös mielivaltaisia funktioita mittausaineistoon. Ohjelmalla tuotettujen kuvien lisääminen Word- ja L A TEX-asiakirjaan on myös kuvattu yksityiskohtaisesti. Gnuplot-ohjelma löytyy Fysiikan laitoksen atk-luokan koneista (työpöydän ikoni Gnuplot32). Ohjelma on käytettävissä myös lähes kaikissa Linux-koneissa komennolla gnuplot. Ohjelma toimii siis myös atk-keskuksen koneilla itu, verso jne. Ohjelman voi ladata ilmaiseksi ohjelman kotisivuilta www.gnuplot.info. Otamme mielellämme vastaan kommentteja tästä ohjeesta sähköpostitse.
Sisältö 1 Johdanto 1 2 Ohjelman käyttäminen 2 2.1 Komennot................................ 2 2.2 Komentotiedoston käyttö........................ 3 2.3 Ääkköset ja erikoismerkit........................ 5 3 Datatiedostot 7 3.1 ASCII-tiedostot............................. 7 3.2 Ascii-tiedostojen luominen eri ohjelmissa............... 7 3.2.1 DataStudio........................... 7 3.2.2 Microsoft Excel......................... 8 4 Kuvaajan piirtäminen 9 4.1 plot-komento.............................. 9 4.2 Kuvaajien tallentaminen tiedostoon................... 12 4.3 Kuvaajan lisääminen Word- ja L A TEX-dokumentteihin......... 12 5 Funktiot ja käyrän sovittaminen mittauspisteisiin 14 5.1 Funktioiden määrittäminen....................... 14 5.2 Sovittaminen fit-komennolla...................... 14 Liitteet 18
1 Johdanto Kuvaajien tärkeyttä työselostuksissa ja artikkeleissa voi tuskin väheksyä. Parhaimmillaan kuvaajat tiivistävät analysoidun mittausinformaation muotoon, josta tulokset hahmottuvat helposti perehtymättömällekin lukijalle. Usein työn lukija katselee vain kuvat ja jättää suuren osan tekstistä lukematta. On siis selvää, että kuvaajiin sekä niitä selittäviin kuvateksteihin on panostettava. Gnuplot-ohjelma on komentotulkkipohjainen, joten sen käyttäminen voi tuntua aluksi hiirellä sohimisen sijasta vaikealta. Tavallisimpiin tarkoituksiin tarvittavien komentojen määrä on kuitenkin vähäinen, joten komennot on helppo ja nopea oppia. Näennäinen vaikeus komentojen kirjoittamisessa muuttuukin ajan kuluessa todelliseksi helpotukseksi, koska komennot voi kirjoittaa vaikkapa erilliseen tiedostoon, jonka voi antaa Gnuplotille argumentiksi. Näin voidaan välittömästi saada aikaan uudet kuvat esimerkiksi mittausaineiston muutoksen jälkeen. Gnuplot-ohjelmassa voidaan määritellä muuttujia ja funktioita monipuolisesti. Gnuplot osaa myös sovittaa mittausaineistoon määritellyn funktion, jolloin mittausaineistoa ei tarvitse erikseen linearisoida. 1
2 Ohjelman käyttäminen Gnuplot-ohjelmaa käytetään näppäimistöllä kirjoitettavien komentojen kautta kuten monia Unix-ohjelmia ja komentotulkkeja. Tämä antiikkiselta tuntuva menetelmä on kuitenkin erittäin joustava ja tarkka sekä mahdollistaa erittäin nopean kuvaajien piirtämisen varsinkin tilanteissa, joissa mittauspisteet muuttuvat jatkuvasti. Komennot voidaan antaa yksitellen ohjelman käyttöliittymässä tai useita komentoja kerrallaan erillisen komentotiedoston avulla. 2.1 Komennot Gnuplot ei vaadi komentojen kirjoittamista täydellisenä, vaan sille riittää, että komento on yksiselitteinen. Komennoista ja niiden osista tarvitsee kirjottaa vain ensimmäisiä kirjaimia. Esimerkiksi tiedoston mittaus.dat pisteiden piirtäminen x- ja y- virhepalkeilla voidaan kirjoittaa muodossa pl "mittaus.dat" u 2:1:4:3 t "Mittauspisteet" w xyer kun kokonainen komento olisi plot "mittaus.dat" using 2:1:4:3 title "Mittauspisteet" with xyerrorbars Tässä using-lauseke lukee tiedoston sarakkeet järjestyksessä y, x, δy, δx ja title lisää selitteen selitelaatikkoon. Kirjoitettaessa komentoja ohjelman käyttöliittymässä voidaan edellisiä rivejä selata käyttämällä mm. nuolinäppäimiä. Windows-versio tarjoaa leikepöydän toiminnot ja joitakin muita toimintoja kätevästi valikossa, joka ilmestyy painettaessa ohjelman työalueella hiiren oikeanpuoleista nappia. Taulukossa 1 on esitetty tavallisimmat Gnuplotin komennot ja jokaisesta komennosta yksi esimerkki. Tarkat kuvaukset komennoista ja lisää esimerkkejä löytyy ohjelman omasta ohjeesta (englanniksi). Varsinkin Windows-version ohje on erittäin helppokäyttöinen ja siinä on paljon esimerkkejä. Komennoissa olevat tekstit esimerkiksi tiedostonimet, otsikot ja selitteet annetaan joko yläpilkulla tai lainausmerkillä. Nämä merkinnät eroavat hieman toisistaan käyttäytymisen suhteen, nimittäin lainausmerkkien sisällä kenoviiva \ tulkitaan erityisellä 2
Taulukko 1: Tavallisimmat Gnuplot-ohjelman komennot. Loput komennot löytyvät esimerkiksi Gnuplot-ohjelman omasta ohjeesta, jossa on myös selitetty kaikkien komentojen tarkka toiminta Komento Toiminta Esimerkki exit/quit lopettaa ohjelman exit cd vaihtaa hakemistoa cd c:/temp pwd näyttää käytössä olevan hakemiston pwd set muuttaa asetuksia set title Mittaus show näyttää asetuksien nykyisiä arvoja show title plot piirtää 2D-kuvaajan plot a*x**2+1 splot piirtää 3D-kuvaajan splot x*y replot suorittaa edellisen plot/splot-komennon replot fit sovittaa käyrän pistejoukkoon fit f(x) mittaus.dat via a,b save tallentaa muuttujia, funktioita ja asetuksia save var variables.dat load lataa save-komennolla tallennetun tiedostoston load variables.dat reset alustaa asetukset oletuksiinsa reset pause tauko pause -1 Paina enter... tavalla. Esimerkiksi komento title Eka rivi\ntoka rivi tuottaa kuvaajaan kaksirivisen otsikon. Tämän vuoksi Windows-järjestelmien hakemistopolut on kirjoittettava käyttäen kauttaviivaa /. Näistä lisää esimerkiksi Gnuplotin ohjeessa kohdassa Syntax. 2.2 Komentotiedoston käyttö Mielestämme kätevin tapa käyttää ohjelmaa on antaa komennot erillisessä komentotiedostossa. Komentotiedosto on tavallinen tekstitiedosto, jossa komennot ovat riveittäin. Komentotiedoston tunnisteella ei ole väliä, mutta on järkevää, että käyttää johdonmukaisesti samaa tunnistetta. Järkevä tunniste voisi olla vaikkapa gpl. Tämä tunniste on kytketty JYFL:n atk-luokan koneissa Gnuplottiin. Windows-ympäristössä komentotiedoston kirjoittamiseen sopii hyvin esimerkiksi Muistio/Notepad-ohjelma. Tyhjän tekstitiedoston voi luoda kätevästi Windows-ympäristössä esimerkiksi työpöydälle tai kansioon painamalla oikean puoleista hiiren näppäintä ja valitsemalla Uusi ja Tekstitiedosto. Useita komentoja voi kirjoittaa samalle riville käyttäen välissä puolipistettä. Komennon voi jakaa usealle riville kirjottamalla rivinvaihdon eteen kenoviivan \. Komment- 3
tirivit aloitetaan ruudulla #. Esimerkkejä komentotiedostoista on liitteessä 1, jossa on esitetty myös komentotiedostojen tuloksena syntyneet kuvaajat. Mikäli Gnuplottia käyttää tekstikonsolissa (Unix-koneet) voidaan komentotiedosto ajaa komentoriviltä (kun Gnuplot ei ole käynnissä ) kirjoittamalla gnuplot kuvaaja1.gpl jossa kuvaaja1.gpl korvataan luonnollisesti oikealla komentotiedoston nimellä. Windows-ympäristössä komentotiedoston voi ajaa esimerkiksi tuplaklikkaamalla komentojonotiedoston kuvaketta. Mikäli käytät esimerkiksi tunnistetta gpl, ei Windows osaa aluksi tehdä mitään, koska se ei tiedä missä ohjelmassa tällainen tiedosto pitäisi avata. Windows avaa dialogin, josta voidaan valita tunnisteeseen liittyvä ohjelma. Valitse listalta nimi wgnupl32. Jos ohjelmaa ei ole listalla, se on haettava asennushakemistosta valitsemalla Muu... /Other... ja etsimällä ohjelma. Valitsemalla ruksin Käytä aina tätä ohjelmaa tämän tiedoston avaamiseen kaikki gpl-tiedostot avautuvat tuplaklikkauksella Gnuplot-ohjelmaan. JYFL:n atk-luokan koneissa tunniste gpl on kytketty valmiiksi Gnuplot-ohjelmaan, joten pelkkä tuplaklikkaus riittää ajamaan komennot. Liitteenä olevat esimerkit toimivat juuri näin. Tuplaklikkaamalla komentotiedoston kuvaketta Gnuplot ajaa tiedoston ja synnyttää halutun kuvaajan samaan kansioon. Kuvaajaa voi katsella esimerkiksi GSview-ohjelmalla tuplaklikkaamalla kuvaketta tai liittää Word-asiakirjaan myöhemmin tässä ohjeessa kuvatulla tavalla. Näin datatiedostossa tapahtuva muutos voidaan päivittää kuvaajaan yhdellä hiiren näpäytyksellä. Tämä on kätevää esimerkiksi Ising-labrassa hysteresis-käyrän määrityksessä. GSview-ohjelman piirtämä kuva näyttää paremmalta ruudulla, jos käyttöön otetaan niin sanottu Anti-aliasing ohjelman valikosta Media, Display Settings... ja panemalla Alpha-arvoiksi 4 bittiä. Ohjelman ollessa käynnissä voidaan komentotiedosto ajaa antamalla Gnuplotille komento load "kuvaaja1.gpl" 4
2.3 Ääkköset ja erikoismerkit Valitettavasti ääkköset tuottavat hieman ongelmia Gnuplotille, koska eri ympäristöissä erikoismerkkit koodataan eri tavoilla. Osaratkaisu ongelmaan on kertoa Gnuplotille käytettävä koodaustapa. Tämä onnistuu komennolla set encoding iso_8859_1 joka voidaan kirjottaa lyhyemmin muodossa set enco iso Edellä kuvattu komento vaihtaa koodaustavaksi ns. Latin-1:n, joka on käytössä useissa Unix-ympäristöissä sekä MS Windows-järjestelmissä. Nyt ääkköset toimivat hieman suuremmalla todennäköisyydellä. Edelleenkin on mahdollista, että postscript-kuvassa ääkköset eivät ole tulostuneet oikein. Täydellä varmuudella ääkköset tulostuvat kaikkialla oikein, kun ne korvataan niitä vastaavilla numeroarvolla. Ääkkösten koodit ovat taulukossa 2. Kaikkien ääkkösten ja erikoismerkkien koodit on esitetty tämän lehtisen liitteessä 4. Koodit on esitelty myös Windows-käyttöjärjestelmän ohjelmassa Merkistö/Character set. Gnuplot ja postscript vaativat kuitenkin koodin oktaalilukuna, kun Merkistö esittää ne kymmenkantaisena. Atk-luokan koneissa skandinaaviset merkit näyttävät toimivan moitteettomasti ilman koodeja, mikäli koodaustavaksi on muutettu edellä kuvattu Latin-1. Taulukko 2: Skandinaavisten merkkien koodeja. Windows ympäristössä nämä eivät ole välttämättömiä, mikäli Gnuplotin koodaustavaksi on asetettu Latin-1 Merkki Koodi å 345 Å 305 ä 344 Ä 304 ö 366 Ö 326 Edellä kuvattuja skandinaavisten merkkien koodeja käytetään kenoviivan kanssa. Esimerkiksi otsikko Ääkköset saadaan varmasti toimimaan oikein kirjoittamalla set title "\304\344kk\366set" kunhan koodaustavaksi on asetettu Latin-1 (ks. edellä). 5
Taulukko 3: Ylä- ja alaindeksit sekä muita merkintöjä laajennetussa postscript-terminaalissa Merkintä Esimerkki Tulos Yläindeksi 10^{-2} 10 2 Alaindeksi t_{a,b} t a,b Ylä- ja alaindeksi t@^2_{a,b} t 2 a,b Kreikkalaiset kirjaimet {/Symbol ab}cd αβcd Erikoismerkit ( ^,_,{,},@,&,\) f\{x,y\} f{x, y} Kun käytössä on laajennettu postscript-terminaali (ks. luku Kuvaajan tallentaminen tiedostoon), voidaan ylä- ja alaindeksit sekä kreikkalaiset aakkoset tuottaa helposti. Taulukossa 3 on esitetty joitain esimerkkejä näiden käytöstä. Laajempi esittely on liitteessä 3. 6
3 Datatiedostot Jotta Gnuplot-ohjelma voisi piirtää mittausaineiston, sen on saatava aineisto jollakin tavalla käsiteltäväksi. Gnuplotissa ei ole taulukkoa, johon mittauspisteet voisi kirjoittaa tai kopioida. Gnuplot haluaa sen sijaan pisteet tiedostossa. Yleisin tapa on antaa Gnuplotille mittauspisteet sisältävän tekstitiedoston nimi. Tällaisia tiedostoja kutsutaan yleisesti myös ascii-tiedostoiksi. 3.1 ASCII-tiedostot Gnuplot erottelee ascii-muotoiset datatiedostot riveihin ja sarakkeisiin. Pääsääntö on, että rivi sisältää yhden mittauspisteen virheineen. Eri sarakkeet puolestaan erottelevat mittauspisteen sijainnin ja virheet xy-tasossa. Gnuplot olettaa sarakkeille asiayhteyden mukaan oletusmerkitykset, jotka eivät ole kuitenkaan sitovia, koska sarakkeiden merkitystä voidaan helposti muuttaa. Rivit erottaa toisistaan rivinvaihto. Rivinvaihto voi olla DOS tai UNIX-tyyppinen. Sarakkeet erotellaan toisistaan välilyönneillä tai sarkaimilla (tabulaattori). Peräkkäiset erottimet tulkitaan aina yhdeksi erottimeksi. Toisinsanoen kaksi sarkainta peräkkäin vaikuttaa kuten yksi sarkain tai välilyönti. Kommenttirivit alkavat #-merkillä, mikä on yleinen käytäntö kommenttiriveille monissa eri ympäristöissä. 3.2 Ascii-tiedostojen luominen eri ohjelmissa Gnuplotin hyväksymien ascii-tiedostojen luominen eri mittausohjelmissa ja taulukkolaskimissa on hyvin helppoa. Yleensä kaikissa mittausohjelmissa on EXPORTniminen toiminto, jolla voidaan luoda toimiva ascii-tiedosto. 3.2.1 DataStudio DataStudio-ohjelmassa ascii-tiedosto luodaan valitsemalla ensin File - Export Data ja aukeavasta ikkunasta haluttu mittaus. Seuraavaksi valitaan luotavan tiedoston nimi ja sijainti. Helpointa on valita tunnisteeksi esimerkiksi.txt, jolloin tiedostoa voidaan helposti editoida esimerkiksi muistiossa. Tiedostoa joudutaankin käsittelemään hieman, 7
koska DataStudio ei laita ensimmäisten rivien alkuun kommenttimerkkiä. DataStudion tuottama tiedosto on jotain seuraavan näköistä: Editable Data, Data X () Y () 1.000 2.000 2.000 5.000 5.000 7.000 Ensimmäiset rivit on poistettava tai niiden alkuun on lisättävä #-merkki. # Editable Data, Data # X () Y () 3.2.2 Microsoft Excel Microsoft Excel -taulukkolaskentaohjelmasta tietojen tallennus ascii-tiedostoksi onnistuu valitsemalla File - Save As ja tiedostomuodoksi esimerkiksi Text (tab delimited)(*.txt). Excel varoittanee, että tähän tiedostomuotoon ei voi sisällyttää muotoiluja eikä muita erikoisia toimintoja. Tällä tavalla toimittaessa käsiteltävän tiedoston nimi muuttuu Excelissä, joten tämä toimintatapa ei ole aina yksinkertaisin. Ehkä helpoin tapa luoda ascii-tiedosto on maalata kopioitava alue Excelissä ja kopioida leikepöydän kautta esimerkiksi muistioon (engl. Notepad). Muistiosta tiedot voidaan tallettaa haluttuun tiedostoon. 8
4 Kuvaajan piirtäminen Kuvaajien piirtämiseen on Gnuplotissa olennaisesti kaksi komentoa: plot ja splot. Näistä ensimmäinen piirtää kaksiulotteisia kuvaajia ja jälkimmäinen kolmiulotteisia. Tässä käsitellään vain kaksiulotteisia kuvaajia, vaikkakin kolmiulotteisten kuvaajien piirtäminen on hyvin samankaltaista. 4.1 plot-komento Kaksiulotteiset kuvaajat piirretään komennolla plot, jonka tarkempi määrittely on plot {<alue>} <funktio> "<datatiedosto>" {datatiedoston valitsimet} {axes <akselit>} {<otsikko>} {with <tyyli>} {, seuraava kuvaaja} Edellä oleva plot-komennon määritelmä on kuitenkin varsin epäselvä, joten muutaman esimerkin käyminen läpi valottanee ohjelman tärkeimmän komennon käyttöä. Oletetaan, että tiedostossa mittaus.dat on mitatut x- ja y-arvot sekä näiden virheet. Tiedosto voi näyttää esimerkiksi seuraavalta # x y virhe(x) virhe(y) 5.1 4.5 0.2 0.4 7.5 8.5 0.2 0.5 10.1 12.0 0.3 0.6 Esimerkiksi komento plot "mittaus.dat" with xyerrorbars piirtää pisteet ja niihin x- ja y-suuntaiset virhepalkit. Tässä alue on jätetty pois, jolloin Gnuplot valitsee alueen, jossa kaikki pisteet näkyvät. Komennon synnyttämä kuvaaja on esitetty kuvassa 1(a). Taulukossa 4 on kuvattu errorbars-optioiden oletussarakkeet tiedostossa. Sarakkeiden järjestystä ja kokonaan uusia sarakkeita voidaan luoda lennosta plot-komennon ohjaimella using. Tämän käytöstä lisää edempänä. Vastaavasti komento plot "mittaus.dat" with linespoints piirtää kuvaajan, jossa mittauspisteet on yhdistetty toisiinsa suorilla viivoilla. Katso kuva 1(b). 9
Spektrit piirretään esimerkiksi ydinfysiikan julkaisuissa kuvan 1(c) mukaisella tavalla, jossa vain mittauspisteiden muodostaman palkiston ääriviivat piirretään. Kuvan 1(c) mukainen kuvaaja saadaan aikaan komennolla plot [3:12] [4:15] "mittaus.dat" with histeps missä hakasulkeissa on kerrottu x- ja y-akselin koordinaateissa alue, joka tulee kuvaajaan. Ilman näitä ensimmäinen ja viimeinen palkki eivät näy kokonaan eikä tulos ole aivan näin kaunis. Ilman mitään erityistä tyyliä komennolla plot [3:12] [4:15] "mittaus.dat" syntyy kuvan 1(d) mukainen kuvaaja. Tässä kuvassa plot-komentoon on lisätty alue [3:12] [4:15], jolloin mittauspisteet erotettuvat paremmin kuvaajan reunoista. Sopiva alue löytyy esimerkiksi kokeilemalla ensin ilman aluetta ja sitten laajentamalla hieman x- ja y-suunnissa. plot-komennon with-osalla määritetään siis syntyvän kuvaajan tyyli. Kokonainen määritelmä on with <tyyli> { {viivantyyli ls <viivan_tyyli>} {{viivantyyppi lt <viivan_tyyppi>} {viivanleveys lw <viivan_leveys>} {pisteentyyppi pt <pisteen_tyyppi>} {pisteenkoko ps <pisteen_koko>}} } Liitteen 1 esimerkeissä on lisää tämän käytöstä. Kuvaajaan ilmestyvät pisteiden ja viivojen tyylit voivat poiketa eri terminaaneissa (esim. windows ja postscript). Mikäli Gnuplotin oletuksen antama tyyli ei kelpaa, voi viivan ja pisteiden tyyppejä ja kokoja muuttaa. Postscript-terminaalin tarjoamat pisteiden tyylit on esitetty liitteessä 2. Esimerkiksi pisteen tyyppi 10 ja 2 kertaa oletusta suuremmat pisteet saadaan kirjoittamalla with <tyyli> pt 10 ps 2 Datatiedostosta voidaan valita using-osalla monipuolisesti käytettävät sarakkeet tai laskea sarakkeiden perusteella uusia sarakkeita. using-sanan jälkeen sarakkeet annetaan kaksoispisteillä erotettuina. Dollarimerkillä voidaan viitata tiedostossa olevaan sarakkeeseen lausekkeissa. Pelkkä kokonaisluku tarkoittaa sarakenumeroa ja luku suluissa puolestaan arvoa. Esimerkiksi 10
13 12 11 10 9 8 7 6 5 4 a Mittauspisteet 4 5 6 7 8 9 10 11 12 11 10 9 8 7 6 5 4 5 6 7 8 9 10 11 b c 14 12 10 8 6 4 3 4 5 6 7 8 9 10 11 12 d 14 12 10 8 6 4 3 4 5 6 7 8 9 10 11 12 Kuva 1: Esimerkkien komentojen tuottamia kuvaajia Taulukko 4: Plot-komennon oletussarakkeet datatiedostossa käytettäessä tyylejä xerrorbars, yerrorbars ja xyerrorbars Optio Oletussarakkeet - y - x y xerrorbars x y δx xerrorbars x y x min x max yerrorbars x y δy yerrorbars x y y min y max xyerrorbars x y δx δy xyerrorbars x y x min x max y min y max 11
using 1:($1+$2):(2):(3) tuottaa neljä saraketta, joista ensimmäinen on sama kuin tiedostossa, toinen on ensimmäisen ja toisen tiedoston sarakkeen summa ja kolmas sekä neljäs sarake vakioarvot 2 ja 3. Liitteessä 1 on esitelty kuvaajien piirtämistä todellisessa tilanteessa. Lisäksi Gnuplotin omassa englanninkielisessä ohjeessa on lisää esimerkkejä. 4.2 Kuvaajien tallentaminen tiedostoon Tavallisin tapa tuottaa kuvaaja, joka voidaan liittää edelleen dokumenttiin, on asettaa tulostusterminaaliksi postscript. Kokonaisuudessaan terminaalin asetus tapahtuu esimerkiksi komennolla set terminal postscript eps enhanced monochrome 16 Komento voidaan kirjoittaa myös lyhyemmin esimerkiksi muodossa set term post eps enh mono 16 Edellä kuvattu komento asettaa terminaaliksi postscriptin kapseloidun muodon (eps) laajennetulla syntaksilla. Lisäksi tulostus asetetaan mustavalkoiseksi ja fontin kooksi 16. Tiedosto, johon tulostus ohjataan, määritetään komennolla set output. Esimerkiksi haluttaessa kuva tiedostoon kala.eps kirjoitetaan komennot set output "kala.eps" replot Komento replot tulostaa uudelleen viimeisen annetun plot-komennon. Mikäli Gnuplot-ohjelmaa käytetään ohjelman omasta käyttöliittymästä, niin seuraavien plot-komentojen tulokset saadaan jälleen ruudulle muuttamalla terminaaliksi windows kirjoittamalla esimerkiksi set term win 4.3 Kuvaajan lisääminen Word- ja L A TEX-dokumentteihin Gnuplot tuottaa parhaimmat kuvaajat postscript-muodossa, joten on suositeltavaa käyttää postscript-terminaalia (käyttö kuvattu edellä sekä esimerkeissä). Postscript-kuva 12
voidaan liittää helposti useisiin dokumentteihin. Microsoft Word ei kuitenkaan käsittele kuvaa itse, joten lisätystä postscript-kuvasta näkyy vain kehykset. Kuva kuitenkin tulostuu kehyksen osoittamaan kohtaan, kun asiakirja tulostetaan postscript-tulostimella. Lähes kaikki laser-tulostimet ovat postscript-tulostimia, joten esimerkiksi JYFL:n atkluokassa tällaisen asiakirjan tulostaminen onnistuu. Microsoft Word -asiakirjaan Gnuplotilla piirretty kuvaaja lisätään valitsemalla Lisää/Insert, Kuva/Picture, Tiedostosta/From file. Kuvan kokoa voi muuttaa Wordissä, mutta tällöin myös kuvassa olevan tekstin koko muuttuu, mikä ei ole usein toivottavaa. Toisin sanoen kuva kannattaa tuottaa Gnuplotissa suoraan haluttuun kokoon käyttämällä komentoa set size <koko>, jossa koon lukema 1 tarkoittaa oletuskokoa ja esimerkiksi 0.5 on puolet oletuskoosta. L A TEX-asiakirjaan postscript-kuva lisätään esimerkiksi riveillä \begin{figure} \centering \includegraphics{kuvaaja.eps} \caption{kuvateksti} \label{fig:mittaukset} \end{figure} L A TEX:n käytöstä voi lukea enemmän Atk-keskuksen oppaasta L A TEXja AMS-L A TEX, Opus asiatekstin ladonnasta, A.-J. Kaijanaho 1998, käyttäjän opas N:o 43. 13
5 Funktiot ja käyrän sovittaminen mittauspisteisiin 5.1 Funktioiden määrittäminen Funktioiden ja muuttujien määrittäminen on verrattain helppoa Gnuplotissa. Funktiot ja muuttujat määritellään yhtäsuuruusmerkillä. Esimerkiksi toisen asteen polynomi p(x) = ax 2 + bx + c voidaan määritellä komennolla p(x) = a*x**2 + b*x + c Funktioiden määrittelyissä on huomattava, että kertomerkki * on aina kirjoitettava, koska Gnuplot sallii muuttujanimissä useita merkkejä. Potenssille ei ole omaa merkkiä. Potenssi kirjoitetaan Gnuplotissa kahdella peräkkäisellä kertomerkillä **. Funktioiden argumentit sijoitetaan aina sulkeisiin. Esimerkiksi sin x ei kelpaa Gnuplotille, vaan sama on kirjoitettava muodossa sin(x). Muuttujat voi nimetä varsin vapaasti. Muuttujien nimien on alettava kirjaimella, mutta tämän jälkeen voi olla numeroita, alaviivoja ja dollari-merkkejä. Gnuplot tukee myös kompleksilukuja kohtalaisen hyvin. Kompleksiluvut syötetään pilkulla erotettuna lukuparina aaltosuluissa. Esimerkiksi luku 2+3i syötetään kirjoittamalla {2,3}. Tällöin pelkkä imaginaariyksikkö i merkitään {0,1}. Kaikki Gnuplotin sisäänrakennetut funktiot ja operaattorit, joiden voi kuvitella laskevan kompleksiluvuilla, hyväksyvät kompleksiset argumentit. Kompleksiluvun reaaliosan saa funktiolla real ja vastaavasti imaginaariosan funktiolla imag. Tavallisimmin käytetyt Gnuplot-ohjelman sisältämät matemaattiset funktiot on esitetty taulukossa 5. Käytössä olevat yksi-, kaksi- ja kolmioperandiset operaattorit on esitelty taulukossa 6 5.2 Sovittaminen fit-komennolla Funktion sovittaminen mittauspisteisiin tehdään fit-komennolla. Sovituskomennon muoto on fit {<alue>} <funktio> "<datatiedosto>" {datatiedoston valitsimet} via "<parametritiedosto>" <muuttuja1>{,<muuttuja2>,...} 14
Taulukko 5: Tavallisimmat Gnuplot-ohjelman sisältämät funktiot Funktio Merkitys Funktio Merkitys sin sini sinh hyperbolinen sini cos kosini cosh hyperbolinen kosini tan tangentti tanh hyperbolinen tangentti asin arkussini asinh ar sinh acos arkuskosini acosh ar cosh atan arkustangentti atanh ar tanh abs itseisarvo exp e x int kokonaislukuosa log luonnollinen logaritmi real reaaliosa log10 kymmenkantainen logaritmi imag imaginaariosa sqrt neliöjuuri Alue rajaa sovitukseen käytettävät mittauspisteet ja on samanlainen kuin plotkomennon yhteydessä. Datatiedoston valitsimet tarkoittaa using-lauseketta. Muutettavat muuttujat luetellaan via sanan jälkeen pilkuilla erotettuna tai erillisessä parametritiedostossa, jossa on varioitavat muuttujat alkuarvojen kanssa rivinvaihdoilla erotettuna. Parametritiedosto voi olla esimerkiksi muotoa a = 3 b = 2 Mikäli varioitavien muuttujien esittelyssä ei käytetä erillistä parametritiedostoa, niin sopivat alkuarvot sovitukselle voidaan antaa komennolla a = 3 jolloin Gnuplot asettaa muuttujan a arvoksi 3. Kaikkien muuttujien nykyiset arvot saadaan komennolla show var. Jos sovituksella ei ole alkuarvoa jollekin muuttujalle, asetetaan alkuarvoksi 1. Gnuplotin käyttämä sovitusalgoritmi toimii nopeammin, mikäli kaikki varioitavat muuttujat ovat absoluuttiselta arvoltaan samaa kertaluokkaa, joten alkuarvojen asettaminen lähelle oikeaa auttaa sovitusta löytämään oikeat arvot nopeammin. Usein epälineaarisissa sovituksissa oikean minimikohdan löytäminen vaatii hyvät alkuarvot. Alkuarvot löytyvät lähinnä kokeilemalla eri arvoja ja piirtämällä funktio ja mittauspisteet samaan kuvaajaan plot-komennolla. On hyvä muistaa, että epälineaaristen sovitusten 15
Taulukko 6: Gnuplot-ohjelman ymmärtämät operaattorit. Tähdellä merkityt vaativat operandeikseen kokonaislukuja Symboli Esimerkki Selitys - -a vastaluku + +a ei tee mitään :) ~a * komplementti!!a * looginen negaatio! a! * kertoma $ $3 * ks. plot-komento ja using ** a**b potenssi * a*b kertolasku / a/b jakolasku % a%b * jakojäännös + a+b yhteenlasku - a-b erotus == a==b yhtäsuuruus(testi)!= a!=b erisuuruus < a<b pienempi kuin <= a<=b pienempi tai yhtäsuuri kuin > a>b suurempi kuin >= a>=b suurempi tai yhtäsuuri kuin & a&b * bittioperaatio ja ^ a^b * bittioperaatio XOR a b * bittioperaatio OR && a&&b * looginen ja a b * looginen tai?: a?b:c jos a, niin b, muutoin c 16
tekemisessä tietokone on aina vain apuväline ja sovituksen pätevyydestä vastaa ihminen. Kaikkien sovituksien tulokset kirjoitetaan oletusarvoisesti tiedostoon fit.log, jossa sovituksen tulokset ovat tallessa myöhempää käyttöä varten. Gnuplot esittää tulokset myös ohjelmassa sovituksen jälkeen. Tiedosto fit.log syntyy käytössä olevaan hakemistoon. Nykyinen hakemisto selviää antamalla Gnuplotille komento pwd. Fit-komento olettaa datatiedoston sarakkeiden olevan järjestyksessä x,y ja s. Kolmas sarake s tulkitaan y:n keskihajonnaksi ja tästä saatavaa arvoa 1/s 2 käytetään painona sovituksessa. Mikäli saraketta ei ole, painona käytetään lukua 1. Mikäli datatiedostossa on vain y-sarake, käytetään x-arvona kasvavaa kokonaislukua kuten plot-komennon yhteydessä. Sarakkeiden järjestystä ja arvoja voidaan laskea käyttämällä datatiedoston valitsinta, using-lauseketta (ks. plot-komento ja seuraavat esimerkit). Komennon käyttö selviää hyvin muutamasta esimerkistä. Esimerkiksi komento fit f(x) "mittaus.dat" via a,b sovittaa funktion f(x) tiedoston mittaus.dat mittauspisteisiin muuttamalla muuttujien a ja b arvoja. Komento fit f(x) "mittaus.dat" using 1:($2**2) via a,b puolestaa sovittaa funktion pistejoukkoon (x,y 2 ), jossa x ja y ovat tiedoston mittaus.dat sarakkeet tässä järjestyksessä. 17
Liitteet Liite 1 Esimerkkejä Liite 2 Postscript-terminaalin pistetyylit Liite 3 Laajennetun postscript terminaalin käyttö Liite 4 Postscript-merkkikoodit 18
Liite 1. Esimerkkejä Esimerkki 1 Komentotiedosto: 1 # Ising-malli 2 # Hysteresis-kuvaajan piirto 3 set enco iso 4 set term post eps enh mono 16 5 set output "hysteresis.eps" 6 set xlabel Magneettikentt\344 B 7 set ylabel Magnetisaatio spini\344 kohden M 8 set key bottom 9 set size 0.6 10 plot "hyste30.fys" u 3:5 tit "Mittauspisteet" w linesp Riveillä 1 ja 2 on kommentti, joka ei vaikuta millään tavoin kuvaajaan. Rivillä 3 asetetaan Latin-1 -koodaus päälle, jotta skandinaaviset merkit toimivat oikein. Rivi 4 asettaa tulostusterminaaliksi laajennetun kapseloidun postscriptin mustavalkoisena ja fontin koolla 16. Rivi 5 nimeää tiedoston, johon tulostus menee. Riveillä 6 ja 7 nimetään x- ja y-akselit. Rivillä 8 siirretään selitelaatikko alas. Rivi 9 muuttaa kuvan kooksi 60 prosenttia oletuksesta. Viimein rivillä 11 piirretään kuvaaja käyttäen kolmatta ja viidettä saraketta tiedostosta. Rivien tulos on kuvassa 1. Magnetisaatio spiniä kohden M 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 Mittauspisteet 1 0.6 0.4 0.2 0 0.2 0.4 0.6 Magneettikenttä B Kuva 1: Esimerkin 1 tuottama kuvaaja
Esimerkki 2 Komentotiedosto: 1 f(x)=a*log(x)+b 2 set enco iso 3 set term post eps enh mono 16 4 set output "keskeiskond.eps" 5 fit f(x) "keskeiskond.dat" via a,b 6 set ylabel Potentiometrin lukema ; set xlabel r [mm] 7 set label "PNS-sovitus: a*log(r)+b \n a = -6.1(2)\n b = 24.7(6)" at 10,3 8 set title "Potentiaali johdinsylinterin sis\344ll\344" 9 set mxtics 10; set mytics 10 10 plot "keskeiskond.dat" tit mittauspisteet w xyerrorb, f(x) tit PNS-sovitus Rivillä 1 määritetään funktio f(x). Rivillä 5 f(x) sovitetaan mittauspisteisiin muuttamalla muuttujia a ja b. Rivillä 7 lisätään tekstiä koordinaattiin (10, 3). Rivi 9 lisää 10 pikkutikkua akseleille lukemien väliin. Tulos kuvassa 2. 12 10 Potentiaali johdinsylinterin sisällä mittauspisteet PNS sovitus Potentiometrin lukema 8 6 4 2 PNS sovitus: a*log(r)+b a = 6.1(2) b = 24.7(6) 0 5 10 15 20 25 30 35 40 45 50 55 r [mm] Kuva 2: Esimerkin 2 tuottama kuvaaja
Esimerkki 3 Komentotiedosto: 1 set term post eps enh mono 16 2 set enco iso 3 set output "let.eps" 4 set xlabel "Energiajättö MeV/(mg/cm^2)" 5 set ylabel "Vaikutusala cm^2/bitti" 6 set logscale y 7 plot "let.dat" notit w points pt 7 ps 2 Rivillä 6 asetetaan y-akseli logaritmiseksi. Molemmat akselit saataisiin logaritmisiksi komennolla set logscale xy. Rivillä 7 piirretään kuvaaja, josta on poistettu selite komennolla notit (notitle). Lisäksi pisteitten tyyliksi on otettu musta pallo (ks. liite 2) sekä kooksi kaksinkertainen oletuskokoon verrattuna. 1e 06 1e 07 Vaikutusala cm 2 /bitti 1e 08 1e 09 1e 10 0 5 10 15 20 25 30 35 40 45 Energiajättö MeV/(mg/cm 2 ) Kuva 3: Esimerkin 3 tuottama kuvaaja. (Kuvassa vuonna 2001 Jyväskylän yliopiston kiihdytinlaboratoriossa Samsung K6T4008V1C-GF70 3.3V 512K SRAM -muistipiirille mitattu virheen vaikutusala hiukkasen energiajätön funktiona)
Liite 2. Postscript-terminaalin pistetyylit 20 10 30 (#70--75 are opaque) 0 40 70 50 60 Kuva 1: Postscript-terminaalin pistetyylit