Vykreslování

ExportPlot
ExportPlot (soubor,typ)
ExportPlot (soubor)

Exportovat obsah okna s grafem do souboru. Typ je řetězec, který určuje typ souboru, který se má použít – „png“, „eps“ nebo „ps“. Když typ souboru není zadán, určí se podle přípony, která by v takovém případě mela být „.png“, „.eps“ nebo „.ps“.

Upozorňujeme, že soubory se přepisují bez dotazu.

Při úspěšném exportu je vrácena hodnota pravda. Jinak je vypsána chyba a vyvolána výjimka.

Příklady:

genius> ExportPlot("soubor.png")
genius> ExportPlot("/složka/soubor","eps")

Verze 1.0.16 a novější.

LinePlot
LinePlot (fce1,fce2,fce3,...)
LinePlot (fce1,fce2,fce3,x1,x2)
LinePlot (fce1,fce2,fce3,x1,x2,y1,y2)
LinePlot (fce1,fce2,fce3,[x1,x2])
LinePlot (fce1,fce2,fce3,[x1,x2,y1,y2])

Vykreslí funkci (nebo několik funkcí) v podobě čárového grafu. Prvních (až 10) argumentů jsou funkce, volitelně můžete zadat meze vykreslovaného okna jako souřadnice x1, x2, y1, y2. Pokud žádné meze nejsou zadány, použijí se aktuálně nastavené meze (viz LinePlotWindow). Pokud nejsou zadány jen meze v ose y, funkce se propočítají a vezme se jejich minimum a maximu.

Parametr LinePlotDrawLegends ovládá vykreslování legendy.

Příklady:

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

Zobrazí okno pro vykreslování čar a vymaže funkce a ostatní čáry, které jsou v něm vykresleny.

LinePlotCParametric
LinePlotCParametric (fce,...)
LinePlotCParametric (fce,t1,t2,tprirust)
LinePlotCParametric (fce,t1,t2,tprirust,x1,x2,y1,y2)

Vykreslit parametrickou funkci komplexní hodnoty v podobě čárového grafu. Jako první se předává funkce, která vrací x+iy, následovaná volitelnými omezeními t1,t2,tprirust pro t a pak mezemi v podobě x1,x2,y1,y2.

Pokud žádné meze nejsou zadány, použijí se aktuálně nastavené meze (viz LinePlotWindow). Místo mezí x a y je možné zadat řetězec "fit" a meze se pak zvolí podle maximálního rozsahu grafu.

Parametr LinePlotDrawLegends ovládá vykreslování legendy.

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

Vykreslit čáru z x1,y1 do x2,y2. x1,y1, x2,y2 může být pro delší lomené čáry nahrazeno maticí n krát 2. Připadně vektor v může být sloupcový vektor komplexních čísel, což je matice n krát 1 a jednotlivá komplexní čísla jsou pak považována za body v rovině.

Mohou být přidány dodatečné parametry, které určují barvu, tloušťku a šipky čáry a vykreslení okna nebo legendy. Stačí přidat argument v podobě řetězce "color", "thickness", "window", "arrow" nebo "legend" a za ním určit barvu, tloušťku, okno jako 4prvkový vektor, typ šipky nebo legendu. (Šipka a okno jsou podporovány od verze 1.0.6.)

Pokud je čára považovaná za vyplněný mnohoúhelník, vyplněný danou barvou, můžete zadat argument "filled". K dispozici od verze 1.0.22.

Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou rozpozná GTK, jako "red", "blue", "yellow", apod. Nebo druhou možností je zadat barvu ve formátu RGB jako "#rgb", "#rrggbb" nebo "#rrrrggggbbbb", kde r, g a b jsou číslice šestnáctkové soustavy červené, zelené a modré složky barvy. A nakonec třetí možností, od verze 1.0.18, je také určení barvy vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až 1, např. [1.0,0.5,0.1].

Okno by mělo být zadáno buď obvyklým způsobem jako [x1,x2,y1,y2] nebo alternativně může být použit řetězec "fit", v kterémž to případě bude rozsah x určen přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.

Specifikace šipky by měla být "origin" (počátek), "end" (konec), "both" (obojí) nebo "none" (nic).

A nakonec legenda, která by měla být zadána jako řetězec, který se použije k osvětlení grafu. Samozřejmě jen v případě, že se legenda tiskne.

Příklady:

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","Řešení")
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")

Na rozdíl od většiny ostatních funkcí, u kterých je jedno, jestli je předán sloupcový nebo řádkový vektor, při zadávání bodů v podobě vektoru komplexních čísel je kvůli možným nejednoznačnostem nutné vždy zadat sloupcový vektor.

Zadávání v jako sloupcového vektoru komplexních čísel je implementováno od verze 1.0.22.

LinePlotDrawPoints
LinePlotDrawPoints (x,y,...)
LinePlotDrawPoints (v,...)

Vykreslit bod v x, y. Vstupem může být matice n krát 2 pro n různých bodů. Tato funkce má v podstatě stejné vstupní údaje jako LinePlotDrawLine. Případně vektor v může být sloupcový vektor komplexních čísel, což je matice n krát 1 a jednotlivá komplexní čísla jsou považována za body v rovině.

Mohou být přidány dodatečné parametry, které určují barvu a tloušťku čáry a vykreslení okna nebo legendy. Stačí přidat argument v podobě řetězce "color", "thickness", "window" nebo "legend" a za ním určit barvu, tloušťku, okno jako 4prvkový vektor nebo legendu.

Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou rozpozná GTK, jako "red", "blue", "yellow", apod. Nebo druhou možností je zadat barvu ve formátu RGB jako "#rgb", "#rrggbb" nebo "#rrrrggggbbbb", kde r, g a b jsou číslice šestnáctkové soustavy červené, zelené a modré složky barvy. A nakonec třetí možností je také určení barvy vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až 1.

Okno by mělo být zadáno buď obvyklým způsobem jako [x1,x2,y1,y2] nebo alternativně může být použit řetězec "fit", v kterémž to případě bude rozsah x určen přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.

A nakonec legenda, která by měla být zadána jako řetězec, který se použije k osvětlení grafu. Samozřejmě jen v případě, že se legenda tiskne.

Examples:

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","Řešení")
genius> LinePlotDrawPoints([1;1+1i;1i;0],"thickness",5)
genius> LinePlotDrawPoints(ApplyOverMatrix((0:6)',`(k)=exp(k*2*pi*1i/7)),"thickness",3,"legend","Sedmá odmocnina z jednotky")

Na rozdíl od většiny ostatních funkcí, u kterých je jedno, jestli jim předáte sloupcový nebo řádkový vektor, může u předávání bodu v podobě vektoru komplexních čísel docházet k nejednoznačnostem. Proto musíte vždy předat sloupcový vektor. Všimněte si v posledním příkladu transpozice vektoru 0:6, aby se z něj stal sloupcový vektor.

Dostupné od verze 1.0.18. Zadávání v v podobě sloupcového vektoru komplexních čísel je implementováno od verze 1.0.22.

LinePlotMouseLocation
LinePlotMouseLocation ()

Vrátit řádkový vektor v kreslení odpovídající aktuální pozici myši. Pokud kreslení není viditelné, vypíše se chyba a vrátí null. V takovém případě byste měli spustit LinePlot nebo LinePlotClear, abyste přepnuli okno s grafem do režimu kreslení. Viz také LinePlotWaitForClick.

LinePlotParametric
LinePlotParametric (xfce,yfce,...)
LinePlotParametric (xfce,yfce,t1,t2,tprirust)
LinePlotParametric (xfce,yfce,t1,t2,tprirust,x1,x2,y1,y2)
LinePlotParametric (xfce,yfce,t1,t2,tprirust,[x1,x2,y1,y2])
LinePlotParametric (xfce,yfce,t1,t2,tprirust, "fit")

Vykreslit parametrickou funkci v podobě čárového grafu. Jako první se zadávají funkce pro x a y, následované volitelnými omezeními t1,t2,tprirust pro t a pak mezemi v podobě x1,x2,y1,y2.

Pokud žádné meze nejsou zadány, použijí se aktuálně nastavené meze (viz LinePlotWindow). Místo mezí x a y je možné zadat řetězec "fit" a meze se pak zvolí podle maximálního rozsahu grafu.

Parametr LinePlotDrawLegends ovládá vykreslování legendy.

LinePlotWaitForClick
LinePlotWaitForClick ()

Pokud je v režimu kreslení, čeká na kliknutí v kreslícím okně a následně vrátí pozici kliknutí v podobě řádkového vektoru. Pokud je okno zavřené, vrátí se funkce okamžitě s hodnotou null. Pokud okno není v režimu kreslení, přepne jej do něj a, pokud není zobrazené, zobrazí jej. Viz také LinePlotMouseLocation.

PlotCanvasFreeze
PlotCanvasFreeze ()

Dočasně zmrazí vykreslování grafu na plátno. To se hodí, když kreslíte spoustu prvků a chcete to pozdržet, aby se fyzicky vykreslilo až všechno naráz a předešlo se tím blikání. Až máte veškeré kreslení hotovo, měli byste zavolat funkci PlotCanvasThaw.

Na konci jakéhokoliv provádění je plátno automaticky rozmrazeno, takže by se nemělo stát, že zůstane zmrazené. Kupříkladu ve chvíli, kdy se zobrazí nový příkazový řádek, dojde k automatickému rozmrazení. Také si všimněte, že volání zmrazení a rozmrazení mohou být zanořená.

Verze 1.0.18 a novější.

PlotCanvasThaw
PlotCanvasThaw ()

Rozmrazí plátno pro vykreslování grafu zmrazené pomocí PlotCanvasFreeze a ihned jej překreslí. Platno je také rozmrazeno vždy po skončení provádění libovolného programu.

Verze 1.0.18 a novější.

PlotWindowPresent
PlotWindowPresent ()

Zobrazí a přenese do popředí vykreslovací okno, případně jej vytvoří, pokud je třeba. Normálně je okno vytvořeno, když je zavolána některá z kreslících funkcí, ale nemusí být vždy přeneseno do popředí, když je schováno za jinými okny. Proto je dobré volat tento kript, když bylo vykreslovací okno vytvořeno již dříve a nyní je schováno za konzolí nebo jinými okny.

Verze 1.0.19 a novější.

SlopefieldClearSolutions
SlopefieldClearSolutions ()

Vymazat řešení vykreslená funkcí SlopefieldDrawSolution.

SlopefieldDrawSolution
SlopefieldDrawSolution (x, y, dx)

Když je aktivní vykreslování směrového pole, vykreslí řešení se zadanou počáteční podmínkou. Použita je standardní Rungeho-Kuttova metoda s přírůstkem dx. Řešení v grafu zůstanou, dokud není zobrazen jiný graf nebo není zavolána funkce SlopefieldClearSolutions. Pro vykreslení řešení můžete použít i grafické rozhraní a počáteční podmínky zadat pomocí myši.

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

Vykreslit směrové pole. Funkce fce by měla přebírat dvě reálná čísla x a y nebo jedno komplexní číslo. Volitelně můžete zadat meze vykreslovacího okna jako souřadnice x1, x2, y1, y2. Pokud žádné meze nejsou zadány, použijí se aktuálně nastavení mezí (viz LinePlotWindow).

Parametr LinePlotDrawLegends ovládá vykreslování legendy.

Příklady:

genius> SlopefieldPlot(`(x,y)=sin(x-y),-5,5,-5,5)
SurfacePlot
SurfacePlot (fce)
SurfacePlot (fce,x1,x2,y1,y2,z1,z2)
SurfacePlot (fce,x1,x2,y1,y2)
SurfacePlot (fce,[x1,x2,y1,y2,z1,z2])
SurfacePlot (fce,[x1,x2,y1,y2])

Vykreslit funkci plochy, která přebírá buď dva argumenty nebo komplexní číslo. Jako první se předává funkce, pak následují meze x1, x2, y1, y2, z1, z2. Pokud žádné meze nejsou zadány, použijí se aktuálně nastavené meze (viz SurfacePlotWindow). V současnosti umí Genius vykreslovat jen funkci jedné plochy.

Když nejsou meze zadány, použije se pro ně minimum a maximum funkce.

Příklady:

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 ()

Zobrazí okno pro vykreslování povrchů a vymaže funkce a ostatní čáry, které jsou v něm vykresleny.

Dostupné ve verzi 1.0.19 a novějších.

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

Vykreslit povrch podle dat. Data jsou matice n × 3, jejíž řádky jsou souřadnice x, y a z. Případně data mohou být vektor, jehož délka je dělitelná 3 a který obsahuje trojice x, y, z. Data by měla obsahovat nejméně 3 body.

Volitelně je možné předat popisek a také volitelné meze. Když meze nejsou uvedeny, vypočtou se z dat, ale nepoužívá se funkce SurfacePlotWindow, pokud ji chcete použít, musíte to provést explicitně. Když není předán popisek, použije se prázdný.

Příklady:

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

Zde je příklad, jak vykreslit graf v polárních souřadnicích a především jak vykreslit funkci -r^2 * θ:

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)

Verze 1.0.16 a novější.

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

Vykreslit plochu podle pravidelných obdélníkových dat. Data jsou dána v matici n krát m, kde řádky jsou souřadnice x a sloupce souřadnice y. Souřadnice x je rozdělena do stejnoměrných n-1 intervalů a souřadnice y do stejnoměrných m-1 intervalů. Meze x1 a x2 udávájí rozsah na ose x, který se má použit a obdobně meze y1 a y2 udávají rozsah na ose y. Pokud nejsou uvedeny meze z1 a z2, jsou vypočteny z dat (budou to extrémní hodnoty v datech).

Volitelně se může zadat popisek, pokud zadán není, použije se prázdný.

Příklady:

genius> SurfacePlotDataGrid([1,2;3,4],[0,1,0,1])
genius> SurfacePlotDataGrid(data,[-1,1,-1,1],"Moje 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],"poloviční sedlo")

Verze 1.0.16 a novější.

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

Vykreslit čáru z x1,y1,z1 do x2,y2,z2. x1, y1, z1, x2, y2, z2 může být pro delší lomené čáry nahrazeno maticí n krát 3.

Mohou být přidány dodatečné parametry, které určují barvu a tloušťku čáry a vykreslení okna nebo legendy. Stačí přidat argument v podobě řetězce "color", "thickness", "window" nebo "legend" a za ním určit barvu, tloušťku, okno jako 6prvkový vektor nebo legendu.

Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou rozpozná GTK, jako "red", "blue", "yellow", apod. Nebo druhou možností je zadat barvu ve formátu RGB jako "#rgb", "#rrggbb" nebo "#rrrrggggbbbb", kde r, g a b jsou číslice šestnáctkové soustavy červené, zelené a modré složky barvy. A nakonec třetí možností, od verze 1.0.18, je také určení barvy vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až 1, např. [1.0,0.5,0.1].

Okno by mělo být zadáno buď obvyklým způsobem jako [x1,x2,y1,y2,z1,z2] nebo alternativně může být použit řetězec "fit", v kterémž to případě bude rozsah x určen přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.

A nakonec legenda, která by měla být zadána jako řetězec, který se použije k osvětlení grafu. Samozřejmě jen v případě, že se legenda tiskne.

Příklady:

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

Dostupné ve verzi 1.0.19 a novějších.

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

Vykreslit bod v x,y,z. Vstupem může být matice n krát 3 pro n různých bodů. Tato funkce má v podstatě stejné vstupní údaje jako SurfacePlotDrawLine.

Mohou být přidány dodatečné parametry, které určují barvu a tloušťku čáry a vykreslení okna nebo legendy. Stačí přidat argument v podobě řetězce "color", "thickness", "window" nebo "legend" a za ním určit barvu, tloušťku, okno jako 6prvkový vektor nebo legendu.

Barva by měla být buď řetězec symbolizující běžným anglickým slovem barvu, kterou rozpozná GTK, jako "red", "blue", "yellow", apod. Nebo druhou možností je zadat barvu ve formátu RGB jako "#rgb", "#rrggbb" nebo "#rrrrggggbbbb", kde r, g a b jsou číslice šestnáctkové soustavy červené, zelené a modré složky barvy. A nakonec třetí možností je také určení barvy vektorem reálných čísel, která představují červenou, zelenou a modrou složku v rozmezí 0 až 1.

Okno by mělo být zadáno buď obvyklým způsobem jako [x1,x2,y1,y2,z1,z2] nebo alternativně může být použit řetězec "fit", v kterémž to případě bude rozsah x určen přesně a rozsah y bude nastaven s pětiprocentním přesahem křivky.

A nakonec legenda, která by měla být zadána jako řetězec, který se použije k osvětlení grafu. Samozřejmě jen v případě, že se legenda tiskne.

Příklady:

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

Dostupné ve verzi 1.0.19 a novějších.

VectorfieldClearSolutions
VectorfieldClearSolutions ()

Vymazat řešení vykreslené funkcí VectorfieldDrawSolution.

Verze 1.0.6 a novější.

VectorfieldDrawSolution
VectorfieldDrawSolution (x, y, dt, tdelka)

Když je aktivní vykreslování vektorového pole, vykreslí řešení se zadanou počáteční podmínkou. Použita je standardní Rungeho-Kuttova metoda s přírůstkem dt pro interval délky tdelka. Řešení v grafu zůstanou, dokud není zobrazen jiný graf nebo není zavolána funkce VectorfieldClearSolutions. Pro vykreslení řešení můžete použít i grafické rozhraní a počáteční podmínky zadat pomocí myši.

Verze 1.0.6 a novější.

VectorfieldPlot
VectorfieldPlot (fcex, fcey)
VectorfieldPlot (fcex, fcey, x1, x2, y1, y2)

Vykreslit dvourozměrné vektorové pole. Funkce fcex by měla být dx/dt vektorového pole a funkce fcey by měla být dy/dt vektorového pole. Funkce by měly přebírat dvě reálná čísla x a y nebo jedno komplexní číslo. Pokud je parametr VectorfieldNormalized nastaven na true, pak je velikost vektorů normalizována. To znamená, že je zobrazen jen směr a velikost ne.

Volitelně můžete zadat meze vykreslovaného okna jako souřadnice x1, x2, y1, y2. Pokud žádné meze nejsou zadány, použijí se aktuálně nastavené meze (viz LinePlotWindow).

Parametr LinePlotDrawLegends ovládá vykreslování legendy.

Příklady:

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