Grafritning
Föregående | Kapitel 11. Lista över GEL-funktioner | Nästa

## Grafritning

ExportPlot

      ExportPlot (fil,typ)

      ExportPlot (fil)

  Exportera innehållet för graffönstret till en fil. Typen är en sträng som anger filtypen att använda, "png", "eps" eller "ps". Om typen inte är angiven antas den vara ändelsen, i vilket fall ändelsen måste vara ".png", ".eps", eller ".ps".

  Observera att filer skrivs över utan att du tillfrågas.

  Vid lyckad export returneras true. I annat fall skrivs ett fel ut och ett undantag flaggas.

  Exempel:

      genius> ExportPlot("fil.png")
      genius> ExportPlot("/katalog/fil","eps")

  Version 1.0.16 och framåt.

LinePlot

      LinePlot (funk1,funk2,funk3,...)

      LinePlot (funk1,funk2,funk3,x1,x2)

      LinePlot (funk1,funk2,funk3,x1,x2,y1,y2)

      LinePlot (funk1,funk2,funk3,[x1,x2])

      LinePlot (funk1,funk2,funk3,[x1,x2,y1,y2])

  Rita en funktion (eller flera) med en linjegraf. De första (upp till 10) argumenten är funktioner, sedan kan du valfritt ange gränserna för graffönstret som `x1`, `x2`, `y1`, `y2`. Om gränser inte anges kommer de aktuellt inställda gränserna att användas (Se `LinePlotWindow`) Om y-gränserna inte anges beräknas funktionerna och sedan används max- och minvärdena.

  Parametern `LinePlotDrawLegends` styr om förklaringen ritas ut.

  Exempel:

      genius> LinePlot(sin,cos)
      genius> LinePlot(`(x)=x^2,-1,1,0,1)

LinePlotClear

      LinePlotClear ()

  Visa linjegrafsfönstret och rensa bort funktioner och alla andra linjer som ritades.

LinePlotCParametric

      LinePlotCParametric (funk,...)

      LinePlotCParametric (funk,t1,t2,tinc)

      LinePlotCParametric (funk,t1,t2,tinc,x1,x2,y1,y2)

  Rita en parametrisk komplexvärd funktion med en linjegraf. Först kommer funktionen som returnerar `x+iy` sedan valfritt `t`-gränserna som `t1,t2,tinc`, sedan valfritt gränserna som `x1,x2,y1,y2`.

  Om gränser inte anges kommer de aktuellt inställda gränserna att användas (Se `LinePlotWindow`). Om istället strängen "fit" anges för x- och y-gränserna kommer gränserna vara den största utsträckningen för grafen

  Parametern `LinePlotDrawLegends` styr om förklaringen ritas ut.

LinePlotDrawLine

      LinePlotDrawLine (x1,y1,x2,y2,...)

      LinePlotDrawLine (v,...)

  Rita en linje från `x1`,`y1` till `x2`,`y2`. `x1`,`y1`, `x2`,`y2` kan ersättas med en `n`×2-matris för ett längre polygontåg. Alternativt kan vektorn `v` vara en kolumnvektor med komplexa tal, det vill säga en `n`×1-matris och varje komplext tal anses då vara en punkt i planet.

  Extra parametrar kan läggas till för att ange linjefärg, tjocklek, pilar, graffönstret eller förklaring. Du kan göra detta genom att lägga till en argumentsträng `"color"`, `"thickness"`, `"window"`, `"arrow"` eller `"legend"`, och efter detta ange färgen, tjockleken, fönstret som en 4-vektor, piltyp eller förklaringen. (Pil och fönster är från version 1.0.6 och framåt.)

  Om linjen ska behandlas som en fylld polygon som är fylld med den angivna färgen kan du ange argumentet `"filled"`. Sedan version 1.0.22 och framåt.

  Färgen ska vara antingen en sträng som indikerar det vanliga engelska ordet för färgen som GTK kommer känna igen, som `"red"`, `"blue"`, `"yellow"`, o.s.v... Alternativt kan färgen anges i RGB-format som `"#rgb"`, `"#rrggbb"` eller `"#rrrrggggbbbb"`, där r, g och b är hexadecimala tal för de röda, gröna och blåa komponenterna av färgen. Slutligen kan sedan version 1.0.18 färgen också anges som en reell vektor som anger de röda gröna och blåa komponenterna där komponenterna är mellan 0 och 1, t.ex. `[1.0,0.5,0.1]`.

  Fönstret ska som vanligt anges som `[x1,x2,y1,y2]`, eller kan alternativt anges som en sträng `"fit"` i vilket fall x-intervallet kommer ställas in precis och y-intervallet med fem procents gränser kring linjen.

  Pilspecifikation ska vara `"origin"`, `"end"`, `"both"` eller `"none"`.

  Slutligen ska förklaring vara en sträng som kan användas som förklaring i grafen. Det vill säga om förklaringar skrivs ut.

  Exempel:

      genius> LinePlotDrawLine(0,0,1,1,"color","blue","thickness",3)
      genius> LinePlotDrawLine([0,0;1,-1;-1,-1])
      genius> LinePlotDrawLine([0,0;1,1],"arrow","end")
      genius> LinePlotDrawLine(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","Lösningen")
      genius> for r=0.0 to 1.0 by 0.1 do LinePlotDrawLine([0,0;1,r],"color",[r,(1-r),0.5],"window",[0,1,0,1])
      genius> LinePlotDrawLine([0,0;10,0;10,10;0,10],"filled","color","green")

  Till skillnad från många andra funktioner som inte bryr sig om de tar en kolumn- eller radvektor så måste på grund av möjliga tvetydigheter punkter som anges som en vektor av komplexa tal alltid anges som en kolumnvektor.

  Att ange `v` som en kolumnvektor med komplexa tal är implementerat från version 1.0.22 och framåt.

LinePlotDrawPoints

      LinePlotDrawPoints (x,y,...)

      LinePlotDrawPoints (v,...)

  Rita en punkt vid `x`,`y`. Indata kan vara en `n`×2-matris för `n` olika punkter. Denna funktion har i stort sett samma indata som LinePlotDrawLine. Alternativt kan vektorn `v` vara en kolumnvektor med komplexa tal, det vill säga en `n`×1-matris och varje komplext tal anses då vara en punkt i planet.

  Extra parametrar kan läggas till för att ange färg, tjocklek, graffönstret eller förklaring. Du kan göra detta genom att lägga till en argumentsträng `"color"`, `"thickness"`, `"window"` eller `"legend"`, och efter detta ange färgen, tjockleken, fönstret som en 4-vektor eller förklaringen.

  Färgen ska vara antingen en sträng som indikerar det vanliga engelska ordet för färgen som GTK kommer känna igen, som `"red"`, `"blue"`, `"yellow"`, o.s.v... Alternativt kan färgen anges i RGB-format som `"#rgb"`, `"#rrggbb"` eller `"#rrrrggggbbbb"`, där r, g och b är hexadecimala tal för de röda, gröna och blåa komponenterna av färgen. Slutligen kan färgen också anges som en reell vektor som anger de röda gröna och blåa komponenterna där komponenterna är mellan 0 och 1.

  Fönstret ska som vanligt anges som `[x1,x2,y1,y2]`, eller kan alternativt anges som en sträng `"fit"` i vilket fall x-intervallet kommer ställas in precis och y-intervallet med fem procents gränser kring linjen.

  Slutligen ska förklaring vara en sträng som kan användas som förklaring i grafen. Det vill säga om förklaringar skrivs ut.

  Exempel:

      genius> LinePlotDrawPoints(0,0,"color","blue","thickness",3)
      genius> LinePlotDrawPoints([0,0;1,-1;-1,-1])
      genius> LinePlotDrawPoints(RungeKuttaFull(`(x,y)=y,0,0.001,10,100),"color","blue","legend","Lösningen")
      genius> LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)
      genius> LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","7:e enhetsrötterna")

  Till skillnad från många andra funktioner som inte bryr sig om de tar en kolumn- eller radvektor så måste på grund av möjliga tvetydigheter punkter som anges som en vektor av komplexa tal alltid anges som en kolumnvektor. Notera därför i sista exemplet transponatet av vektorn `0:6` för att göra den till en kolumvektor.

  Tillgängligt från version 1.0.18 och framåt. Att ange `v` som en kolumnvektor med komplexa tal är implementerat från version 1.0.22 och framåt.

LinePlotMouseLocation

      LinePlotMouseLocation ()

  Returnerar en radvektor för en punkt på linjegrafen som motsvarar den aktuella positionen för musen. Om linjegrafen inte är synlig skrivs ett fel ut och `null` returneras. I detta fall bör du köra `LinePlot` eller `LinePlotClear` för att ställa graffönstret i linjegrafsläget. Se även `LinePlotWaitForClick`.

LinePlotParametric

      LinePlotParametric (xfunk,yfunk,...)

      LinePlotParametric (xfunk,yfunk,t1,t2,tinc)

      LinePlotParametric (xfunk,yfunk,t1,t2,tinc,x1,x2,y1,y2)

      LinePlotParametric (xfunk,yfunk,t1,t2,tinc,[x1,x2,y1,y2])

      LinePlotParametric (xfunk,yfunk,t1,t2,tinc,"fit")

  Rita en parametrisk funktion med en linjegraf. Först kommer funktionerna för `x` och `y`, sedan valfritt `t`-gränserna som `t1,t2,tinc`, sedan valfritt gränserna som `x1,x2,y1,y2`.

  Om x- och y-gränser inte anges kommer de aktuellt inställda gränserna att användas (Se `LinePlotWindow`). Om istället strängen "fit" anges för x- och y-gränserna kommer gränserna vara den största utsträckningen för grafen

  Parametern `LinePlotDrawLegends` styr om förklaringen ritas ut.

LinePlotWaitForClick

      LinePlotWaitForClick ()

  Om i linjegrafsläge så inväntas ett klick på linjegrafsfönstret och platsen för klicket returneras som en radvektor. Om fönstret är stängt returnerar funktionen omedelbart `null`. Om fönstret inte är i linjegrafsläge ställs det i det läget och visas om det inte visats. Se även `LinePlotMouseLocation`.

PlotCanvasFreeze

      PlotCanvasFreeze ()

  Frys tillfälligt ritande av grafens rityta. Användbart om du behöver rita ett gäng element och vill fördröja ritande av allt för att undvika flimmer i en animering. Efter att allt har ritats bör du anropa `PlotCanvasThaw`.

  Ritytan töas alltid upp efter att en exekvering avslutas. så den kommer aldrig att förbli frusen. Till exempel töas ritytan automatiskt ögonblicket då en ny kommandorad visas. Observera också att anrop för att frysa och töa upp kan nästas på ett säkert sätt.

  Version 1.0.18 och framåt.

PlotCanvasThaw

      PlotCanvasThaw ()

  Töa upp ritytan för graf som frystes av `PlotCanvasFreeze` och rita om ritytan omedelbart. Ritytan töas också alltid upp efter att ett program slutat exekvera.

  Version 1.0.18 och framåt.

PlotWindowPresent

      PlotWindowPresent ()

  Visa och höj graffönstret, skapa det om nödvändigt. Normalt skapas fönstret då en av graffunktionerna anropas, men det höjs inte alltid om det råkar vara under andra fönster. Denna funktion är därför bra att anropa i skript där graffönstret kan ha skapats tidigare, och nu är dolt bakom konsolen eller andra fönster.

  Version 1.0.19 och framåt.

SlopefieldClearSolutions

      SlopefieldClearSolutions ()

  Rensar bort lösningarna som ritats av funktionen `SlopefieldDrawSolution`.

SlopefieldDrawSolution

      SlopefieldDrawSolution (x, y, dx)

  Då en riktningsfältsgraf är aktiv, rita en lösning med de angivna startvillkoren. Den vanliga Runge-Kutta-metoden används med ökning `dx`. Lösningarna stannar i grafen tills en annan graf visas eller tills du anropar `SlopefieldClearSolutions`. Du kan också använda det grafiska gränssnittet för att rita lösningar och ange startvillkor med musen.

SlopefieldPlot

      SlopefieldPlot (funk)

      SlopefieldPlot (funk,x1,x2,y1,y2)

  Rita ett riktningsfält. Funktionen `funk` ska ta två reella tal `x` och `y` eller ett ensamt komplext tal. Valfritt kan du ange gränserna för graffönstret som `x1`, `x2`, `y1`, `y2`. Om gränser inte anges kommer de aktuellt inställda gränserna att användas (Se `LinePlotWindow`).

  Parametern `LinePlotDrawLegends` styr om förklaringen ritas ut.

  Exempel:

      genius> SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)

SurfacePlot

      SurfacePlot (funk)

      SurfacePlot (funk,x1,x2,y1,y2,z1,z2)

      SurfacePlot (funk,x1,x2,y1,y2)

      SurfacePlot (funk,[x1,x2,y1,y2,z1,z2])

      SurfacePlot (funk,[x1,x2,y1,y2])

  Rita en ytfunktion som antingen tar två argument eller ett komplext tal. Först kommer funktionen sedan valfritt gränser som `x1`, `x2`, `y1`, `y2`, `z1`, `z2`. Om gränser inte anges kommer de aktuellt inställda gränserna att användas (Se `SurfacePlotWindow`). Genius kan för närvarande endast rita ut en ensam ytgraf.

  Om z-gränserna inte är angivna kommer maximum- och minimumvärdena för funktionen att användas.

  Exempel:

      genius> SurfacePlot(|sin|,-1,1,-1,1,0,1.5)
      genius> SurfacePlot(`(x,y)=x^2+y,-1,1,-1,1,-2,2)
      genius> SurfacePlot(`(z)=|z|^2,-1,1,-1,1,0,2)

SurfacePlotClear

      SurfacePlotClear ()

  Visa ytgrafsfönstret och rensa ut funktioner och alla andra linjer som ritats.

  Tillgängligt i version 1.0.19 och framåt.

SurfacePlotData

      SurfacePlotData (data)

      SurfacePlotData (data,etikett)

      SurfacePlotData (data,x1,x2,y1,y2,z1,z2)

      SurfacePlotData (data,etikett,x1,x2,y1,y2,z1,z2)

      SurfacePlotData (data,[x1,x2,y1,y2,z1,z2])

      SurfacePlotData (data,etikett,[x1,x2,y1,y2,z1,z2])

  Rita en yta från data. Data är en n×3-matris vars rader är x-, y- och z-koordinaterna. Data kan också helt enkelt vara en vektor vars längd är en multipel av 3 och därmed innehåller tripplarna av x, y, z. Data ska innehålla minst 3 punkter.

  Valfritt kan vi ange etiketten och valfritt även gränserna. Om gränserna inte anges beräknas de från data, `SurfacePlotWindow` används inte, om du vill använda det, skicka med det explicit. Om ingen etikett anges används en tom etikett.

  Exempel:

      genius> SurfacePlotData([0,0,0;1,0,1;0,1,1;1,1,3])
      genius> SurfacePlotData(data,"Mina data")
      genius> SurfacePlotData(data,-1,1,-1,1,0,10)
      genius> SurfacePlotData(data,SurfacePlotWindow)

  Här är ett exempel på hur vi kan rita med polära koordinater, i synnerhet hur funktionen `-r^2 * theta` ritas:

      genius> d:=null; for r=0 to 1 by 0.1 do for theta=0 to 2*pi by pi/5 do d=[d;[r*cos(theta),r*sin(theta),-r^2*theta]];
      genius> SurfacePlotData(d)

  Version 1.0.16 och framåt.

SurfacePlotDataGrid

      SurfacePlotDataGrid (data,[x1,x2,y1,y2])

      SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2])

      SurfacePlotDataGrid (data,[x1,x2,y1,y2],etikett)

      SurfacePlotDataGrid (data,[x1,x2,y1,y2,z1,z2],etikett)

  Rita en yta från vanliga rektangulära data. Data ges i en n×m-matris där raderna är x-koordinaten och kolumnerna är y-koordinaten. x-koordinaten delas in i n-1 lika stora delintervall och y-koordinaten delas in i m-1 lika stora delintervall. Gränserna `x1` och `x2` ger intervallet på x-axeln som vi använder, och gränserna `y1` och `y2` ger intervallet på y-axeln som vi använder. Om gränserna `z1` och `z2` inte anges beräknas de från data (till att vara extremvärdena från data).

  Valfritt kan vi ange etiketten, om etikett inte anges används en tom etikett.

  Exempel:

      genius> SurfacePlotDataGrid([1,2;3,4],[0,1,0,1])
      genius> SurfacePlotDataGrid(data,[-1,1,-1,1],"Mina data")
      genius> d:=null; for i=1 to 20 do for j=1 to 10 do d@(i,j) = (0.1*i-1)^2-(0.1*j)^2;
      genius> SurfacePlotDataGrid(d,[-1,1,0,1],"halv sadel")

  Version 1.0.16 och framåt.

SurfacePlotDrawLine

      SurfacePlotDrawLine (x1,y1,z1,x2,y2,z2,...)

      SurfacePlotDrawLine (v,...)

  Rita en linje från `x1`,`y1`,`z1` till `x2`,`y2`,`z2`. `x1`,`y1`,`z1`, `x2`,`y2`,`z2` kan ersättas med en `n`×3-matris för ett längre polygontåg.

  Extra parametrar kan läggas till för att ange linjefärg, tjocklek, graffönster eller förklaring. Du kan göra detta genom att lägga till en argumentsträng `"color"`, `"thickness"`, `"window"` eller `"legend"`, och efter detta ange färgen, tjockleken, fönstret som en 6-vektor eller förklaringen.

  Färgen ska vara antingen en sträng som indikerar det vanliga engelska ordet för färgen som GTK kommer känna igen, som `"red"`, `"blue"`, `"yellow"`, o.s.v... Alternativt kan färgen anges i RGB-format som `"#rgb"`, `"#rrggbb"` eller `"#rrrrggggbbbb"`, där r, g och b är hexadecimala tal för de röda, gröna och blåa komponenterna av färgen. Slutligen kan sedan version 1.0.18 färgen också anges som en reell vektor som anger de röda gröna och blåa komponenterna där komponenterna är mellan 0 och 1, t.ex. `[1.0,0.5,0.1]`.

  Fönstret ska som vanligt anges som `[x1,x2,y1,y2,z1,z2]`, eller kan alternativt anges som en sträng `"fit"` i vilket fall x-intervallet kommer ställas in precis och y-intervallet med fem procents gränser kring linjen.

  Slutligen ska förklaring vara en sträng som kan användas som förklaring i grafen. Det vill säga om förklaringar skrivs ut.

  Exempel:

      genius> SurfacePlotDrawLine(0,0,0,1,1,1,"color","blue","thickness",3)
      genius> SurfacePlotDrawLine([0,0,0;1,-1,2;-1,-1,-3])

  Tillgängligt i version 1.0.19 och framåt.

SurfacePlotDrawPoints

      SurfacePlotDrawPoints (x,y,z,...)

      SurfacePlotDrawPoints (v,...)

  Rita en punkt vid `x`,`y`,`z`. Indata kan vara en `n`×3-matris för `n` olika punkter. Denna funktion har i huvudsak samma indata som SurfacePlotDrawLine.

  Extra parametrar kan läggas till för att ange linjefärg, tjocklek, graffönster eller förklaring. Du kan göra detta genom att lägga till en argumentsträng `"color"`, `"thickness"`, `"window"` eller `"legend"`, och efter detta ange färgen, tjockleken, fönstret som en 6-vektor eller förklaringen.

  Färgen ska vara antingen en sträng som indikerar det vanliga engelska ordet för färgen som GTK kommer känna igen, som `"red"`, `"blue"`, `"yellow"`, o.s.v... Alternativt kan färgen anges i RGB-format som `"#rgb"`, `"#rrggbb"` eller `"#rrrrggggbbbb"`, där r, g och b är hexadecimala tal för de röda, gröna och blåa komponenterna av färgen. Slutligen kan färgen också anges som en reell vektor som anger de röda gröna och blåa komponenterna där komponenterna är mellan 0 och 1.

  Fönstret ska som vanligt anges som `[x1,x2,y1,y2,z1,z2]`, eller kan alternativt anges som en sträng `"fit"` i vilket fall x-intervallet kommer ställas in precis och y-intervallet med fem procents gränser kring linjen.

  Slutligen ska förklaring vara en sträng som kan användas som förklaring i grafen. Det vill säga om förklaringar skrivs ut.

  Exempel:

      genius> SurfacePlotDrawPoints(0,0,0,"color","blue","thickness",3)
      genius> SurfacePlotDrawPoints([0,0,0;1,-1,2;-1,-1,1])

  Tillgängligt i version 1.0.19 och framåt.

VectorfieldClearSolutions

      VectorfieldClearSolutions ()

  Rensar bort lösningarna som ritats av funktionen `VectorfieldDrawSolution`.

  Version 1.0.6 och framåt.

VectorfieldDrawSolution

      VectorfieldDrawSolution (x, y, dt, tlen)

  Då en verktorfältsgraf är aktiv, rita en lösning med de angivna startvillkoren. Den vanliga Runge-Kutta-metoden används med ökning `dt` under ett intervall med längden `tlen`. Lösningarna stannar i grafen tills en annan graf visas eller tills du anropar `VectorfieldClearSolutions`. Du kan också använda det grafiska gränssnittet för att rita lösningar och ange startvillkor med musen.

  Version 1.0.6 och framåt.

VectorfieldPlot

      VectorfieldPlot (funkx, funky)

      VectorfieldPlot (funkx, funky, x1, x2, y1, y2)

  Rita ett tvådimensionellt vektorfält. Funktionen `funkx` ska vara dx/dt för vektorfältet och funktionen `funky` ska vara dy/dt för vektorfältet. Funktionerna ska ta två reella tal `x` och `y`, eller ett ensamt komplext tal. Då parametern `VectorfieldNormalized` är `true` normaliseras magnituden för vektorerna. Det vill säga endast riktningen visas, inte magnituden.

  Valfritt kan du ange gränserna för graffönstret som `x1`, `x2`, `y1`, `y2`. Om gränser inte anges kommer de aktuellt inställda gränserna att användas (Se `LinePlotWindow`).

  Parametern `LinePlotDrawLegends` styr om förklaringen ritas ut.

  Exempel:

      genius> VectorfieldPlot(`(x,y)=x^2-y, `(x,y)=y^2-x, -1, 1, -1, 1)

Föregående | Upp | Nästa
Symboliska operationer | Hem | Kapitel 12. Exempelprogram i GEL