Det är ofta som vi mattelärare behöver ta fram funktionsgrafer på formen . Webbverktyget Desmos är ett enkelt och interaktivt verktyg som ofta passar bra i klassrummet, men om man vill anpassa grafen med en text, en pil eller en figur så är inte Desmos det bästa verktyget. Det är heller inte det bästa verktyget om man behöver sin graf i ett dokument eller som en bild på webben.
Gnuplot är ett program där grafer kan anpassas i mycket hög grad. Programmet är fritt tillgängligt, men ärligt talat har det en hög tröskel för användandet. Grafen definieras av kod, och det finns många parametrar att variera.
Diagrammet ovan kan nog kan använda som mall i många sammanhang (naturligtvis med andra funktioner, dimensioner, texter och färger…). Mitt eget syfte med det var just att konstruera en mall som är användbar för mig, och att ha en referens för oss som inte talar flytande ”gnuplotska”.
Koden som producerar detta är:
# Koden kräver Gunplot 5. # Välj filformat och namn som filen sparas på set terminal postscript eps enhanced color font 'Helvetica,14' # kommer att skapa en fil i eps-format set output 'myplot.eps' # Ladda t ex upp eps-filen till http://image.online-convert.com/convert-to-png för att konvertera till en png-fil # Eller om programmet Imagemagick är installerat i miljön: # convert -density 300 -flatten myplot.eps -background white myplot.png # eller för transparens (där vit färg görs genomskinlig): # convert -density 300 -flatten myplot.eps -background none -transparent white myplot.png # # Se: https://www.imagemagick.org/script/command-line-options.php # För att å, ä och ö ska funka. Lite struligt, kommenterar mer nedan... set encoding iso_8859_1 # Grafens upplösning set samples 5000 # Ju högre tal, desto mjukare graf. 100 är standard. # Nyckel till graferna, om det behövs #set nokey set key horizontal below height 3 set key box lt 1 dashtype "-" lc -1 lw 2 # Rubrik med storlek typsnitt set title font ",22" norotate set title "Exempel p{\345} ramverk f{\366}r funktionsgrafer i Gnuplot" # Lite om koordinatsystemets utseende set xtics font "Times-Roman, 18" set ytics font "Times-Roman, 18" # Typsnitt och storlek # Definierar ls 12 och 13, används för eventuellt rutnät nedan set style line 12 lc rgb 'gray' lt 1 lw 2 set style line 13 lc rgb 'gray' lt 0 lw 1 # Rutnät set grid xtics ytics ls 12 # Om det önskas tätare rutnät #set grid mxtics mytics ls 13 # Korsande axlar, istället för ram unset border set xzeroaxis lt -1 set yzeroaxis lt -1 # Pilar på koordinataxlarna set style arrow 1 head filled size screen 0.03,15,45 ls 1 set arrow 1 from graph 0, first 0 to graph 1, first 0 as 1 lc rgb "black" set arrow 2 from first 0, graph 0 to first 0, graph 1 as 1 lc rgb "black" # Förhållandet mellan diagrammets höjd och bredd set size ratio 0.7 # 0.7 betyder höjd = 0.7 * bredd # Axelrubriker (kan även vridas) set xlabel font "Times-Roman, 18" "{/Times-Italic x}" offset 35, 14 set ylabel font "Times-Roman,18" "{/Times-Italic y}" offset 32, 14 rotate by 0 # Intervall på axlarna, kan givetvis vara olika set xrange[-5:5] set yrange[-5:5] # Skalstreck på axlarna set xtics -4, 2, 4 axis # Från -5 till 4 med 2 steg intervall på x-axelns huvudskala set mxtics 3 # Tredjedelsintervall på x-axelns huvudskala set ytics -4, 2, 4 axis # Intervall 2 på y-axelns huvudskala set mytics 3 # Tredjedelsintervall på y-axelns huvudskala # Lite fritext i grafen... set label font ",12" "F{\366}rklaring av skala,\nradbrytning m{\366}jlig" at 4,-1 center set label font ",12" "F{\366}rklaring av skala" at -0.5,3 center rotate by 90 set label "{/Times-Italic f}({/Times-Italic x}) = (1/{/Times-Italic x}){/Symbol \327}sin({/Times-Italic e^x}) + 1" at 2,-5.6 left rotate by 0 font "Times-Roman,16" textcolor rgb "red" set label "{/Times-Italic g}({/Times-Italic x}) = 8/3 - {/Times-Italic x}^2" at 2,-6.4 left rotate by 0 font "Times-Roman,16" textcolor rgb "black" # Funktioner som ska ritas f(x) = x<4.5 ? 1/x*sin(exp(x))+1: 1/0 g(x) = (2.0+2.0/3.0)-x**2 # OBS! Beräkningar ger heltal om det inte ingår decimaler... # (Funktionen f(x) ritas fram till x = 4.5, därefter stopp av estetiska skäl.) plot f(x) ls 1 linecolor rgb "red" lw 2, \ g(x) ls 2 dashtype "." linecolor rgb "black" lw 2 # ls är LineStyle och lw är LineWidth.
Ja, som synes är det rätt mycket kod för att producera en graf med text och kommentarer. Jag har dock tagit ut svängarna med olika typsnitt, en hel del text och olika stilar på graferna.
Accentuerade bokstäver kräver sina speciella s.k postscript-koder. Här är koderna för de svenska tecknen:
å: \345 ä: \344 ö: \366 Å: \305 Ä: \304 Ö: \326
Övriga postscriptkoder hittas här.
Jag återkommer med exempel på hur grafer kan produceras ur värdetabeller med Gnuplot. Det kan dock mycket enkelt göras med nästinpå valfritt kalkylprogram. Det jag säkert också kommer att få anledning att återkomma till är hur man färgfyller ett område under en graf eller mellan grafer.