Siirry suoraan sisältöön

Protip: Piirrä matemaattisia funktioita gnuplotilla

  • tehnyt

Käytätkö Microsoftin Exceliä matemaattisten funktioiden ja datan kuvaamiseen? Ärsyttääkö, kun yksinkertaisen viivan piirtämiseen ruudulle vaaditaan menujen ja välilehtien loputonta kahlaamista?

Gnuplotilla onnistuu käyrän kuin käyrän piirtäminen. Se on saatavilla useille eri käyttöjärjestelmille ja sen lähdekoodi on avointa, vaikka onkin tekijänoikeudella suojattu. Joten varsinaisesta vapaasta ohjelmistosta emme voi puhua, mutta väliäkö tuolla, jos sen kerran saa omalle koneelle ilmaiseksi. Nimestään huolimatta gnuplotilla ei ole mitään tekemistä GNU-projektin kanssa. Gnuplot on komentorivipohjainen sovellus. Sen käyttö vaatii aluksi opiskelua, mutta kun kerran on päässyt jyvälle, ei paluuta Exceliin ole. Tässä lyhyt ohje, miten pääset alkuun.

Gnuplotin voit Linux Mintissä asentaa ohjelmistohallinnasta yhdellä klikkauksella, komentoriviltä komennolla ”sudo apt install gnuplot” tai pro-tapauksessa kääntämällä lähdekoodin itse. Kokeilemme gnuplotin versiota ”Hello World!” ohjelmasta, joka tässä tapauksessa tarkoittaa siniaallon piirtämistä ruudulle. Käynnistä gnuplot päätteestä syöttämällä komento ”gnuplot”. Jos asennus on sujunut oikein, sinua tervehtii yksinkertainen pääte. Tässä tapauksessa Linuxin gnuplot manuaalisivu ei auta paljoakaan. Kannattaa ladata omalle koneelle vaativaa käyttöä varten koko yli 300-sivuinen gnuplot manuaali gnuplot.info sivulta, jos aiot tosissasi piirtää ruudulle funktioita. Aloitetaan syöttämällä rivi kerrallaan seuraavat komennot:

set terminal png
set output "sine.png"
set title "My first sine wave"
set xlabel "X"
set ylabel "Y"
plot sin(x) with lines

Ensimmäinen komento asettaa terminaalin. Gnuplotiin on saatavilla useita eri terminaaleja, dumb tulostaa käyrän päätteeseen tekstimuodossa, postscript ja tgif ovat saatavilla ja noin sata eri muotoa, missä grafiikkaa saa ulos. Jos haluamme yksinkertaisen kuvatiedoston, valitaan png. Seuraavalla komennolla asetetaan tiedosto, johon kuva piirretään. Title komennolla saadaan asetettua kuvalle otsikko, xlabel ja ylabel asettavat x- ja y-akseleiden otsikot ja lopuksi komennolla ”plot sin(x) with lines” piirretään itse käyrä. Voit nyt kurkistaa hakemistoon, jossa käynnistit gnuplotin ja siellä pitäisi olla tiedosto nimeltä sine.png. Sen pitäisi näyttää tältä:

Kokeile muuttaa funktiota haluamaasi muotoon. Gnuplot osaa yleensä automaattisesti arvata sopivat x- ja y-akseleiden arvot. Jos haluat säätää niitä itse, se onnistuu tähän tapaan: ”plot [-1:1] [-2:2] sin(x)” Komentoja ei tarvitse näpytellä yksi kerrallaan, vaan tämän harjoituksenkin komennot voi tallentaa tiedostoon ja päätteessä komennolla ”gnuplot tiedosto” gnuplot lukee tiedostosta annetut komennot.

Yllä esimerkki allekirjoittaneen GPS-laitteen tallentamasta harjoitusdatasta gnuplotilla piirtämästä käppyrästä, joka näyttää korrelaation korkeuden, sykkeen ja nopeuden välillä. Se syntyi datatiedostosta seuraavalla skriptillä:

set terminal png
set output "sample_plot.png"
set title "My awesome workout"
set xlabel "Seconds"
set ylabel "km/h"
set y2label "bmp / meters"
set y2tics
set grid
set key right bottom
plot "sample_output.dat" using 1:8 with lines title "Speed", "sample_output" using 1:5 with lines title "Elevation" axes x1y2, "sample_output.dat" using 1:4 with lines title "Heart rate" axes x1y2

Tässä tapauksessa gnuplot lukee .dat tiedostosta dataa sarake kerrallaan. Oikea sarake valitaan ”using x:y” komennolla. Datatiedostossa sarakkeiden tulee olla välilyönnillä erotettuja yleisemmän CSV-formaatin sijaan, jossa sarakkeet erotetaan pilkulla. Excelistä ja Calcista taulukot saa vietyä helposti CSV-formaattiin ja sarakkeet voi valita välilyönneillä erotettavaksi.

Tämä ei ollut kaiken kattava tutoriaali, vaan pieni maistiainen, lue koko manuaali, hypi yli ne funktiot, joita ikinä et tarvitse. Manuaalista löytyy kyllä kaikki tarpeellinen tieto, kun jaksaa kärsivällisesti etsiä. Moni tieteilijä käyttää gnuplotia ammattitason funktioiden kuvaamiseen kaupallisten tuotteiden sijaan. Mahdollisuudet gnuplotilla ovat rajattomat. Jos työstät työksesi matemaattisia funktioita, katso myös avoimen lähdekoodin projekti Octave. Sekin on asennettavissa Linux Mintiin ohjelmistonhallinnasta yhdellä klikkauksella. Kuulemma se on Matlab yhteensopiva, joidenkin mukaan toimii paremmin kuin Matlab, mutta koska allekirjoittanut ei ole matemaatikko, en voi tätä itse vahvistaa.

Vastaa

Sähköpostiosoitettasi ei julkaista.