15
 Grafické výstupy v Octave/Matlabu Grafické výstupy v Octave/Matlabu a GnuPlotu a GnuPlotu Úvod do programování v prostředích Octave, Scilab a Matlab co byste měli umět po dnešní lekci:  nakreslit xy graf s popisky os  nakreslit graf s více závislostmi, pro každou z nich vybrat symbol/barvu linie  nakreslit více grafů do jednoho  vykreslit 3D graf v různých formátech (“normální”, kontury, barevnou mapu)  výsledný graf uložit do vhodného formátu (ps, png, ...)  vykreslit grafy pomocí programu GnuPlot

Grafick stupy v Octave/Matlabu a GnuPlotukfes-16.karlov.mff.cuni.cz/~standa/matlab/matlab8.pdf · 2010-09-03 · Grafické výstupy v Octave/Matlabu a GnuPlotu Úvod do programování

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

co byste měli umět po dnešní lekci:

● nakreslit xy graf s popisky os● nakreslit graf s více závislostmi, pro každou z nich vybrat symbol/barvu linie● nakreslit více grafů do jednoho● vykreslit 3D graf v různých formátech (“normální”, kontury, barevnou mapu)● výsledný graf uložit do vhodného formátu (ps, png, ...)● vykreslit grafy pomocí programu GnuPlot

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

Octave

octave:1> x=[0:0.05:8*pi];octave:2> y=sin(x).*exp(­x/5);octave:3> x2=[0:0.6:8*pi];octave:4> y2=sin(x2).*exp(­x2/5)+randn(size(x2))/30;octave:5> plot(x2,y2,'b+;moje data;',x,y,'r­;teorie;');octave:6> __gnuplot_set__ encoding iso_8859_1octave:7> xlabel("2{/Symbol q} (deg)")octave:8> ylabel("Intensita (cps)")octave:9> print('graf.eps','­depsc2','­landscape','­FHelvetica:20');

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

Octave a MatlabOctave a Matlab

příkaz plot:     plot(x,y,FMT,x2,y2,FMT2,...)

x,y – vektory zobrazovaných datFMT – popis, jak se mají data zobrazit              ' ­ ' linie              ' . ' body              '@' styl bodů              '­@' styl čar              ' ^ ' impulsový graf              ' N ' schody              ' N ' číslo barvy              ' NM ' číslo barvy a stylu zobrazení              ' C ' kód barvy (“k”,”r”,”g”,”b”,”m”,”c”,”w”)               ;legenda; text legendy               +,*,o,x – styly bodů

Matlab nabízí více možností stylůbodů a čar, viz help plot

Příklad: Vykreslete grafy nějakých funkcíbody, linií, impulsových grafem, v logaritmickém měřítku 

stejná syntaxe příkazu plot platí i propříkazy semilogy, semilogx a loglog

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

uložení grafu v Octaveuložení grafu v Octave (pozor na verze aneb čtení dokumentace se vyplatí)

Od verze 2.1.73  se pro tisk používá příkaz print z důvodů kompatability s Matlabem. GnuPlotu lze předat potřebné parametry pomocí příkazů __gnuplot_set__ a __gnuplot_raw__ .Pro starší verze (zejména verze 2.1.57 a další do 2.1.72 , které jsou k dispozici pro OS Windows a ve starších distribucích linuxu) je nutno použít funkci gset, která předává GnuPlotu potřebné parametry. 

print('graf.eps','­depsc2','­landscape','­FHelvetica:20');  zapíše obrázek do souboru graf.eps ve formátu eps2 (barevně), v orientaci na délku a pro popisky použije font Helvetica o velikosti 20 (fonty se udávají jen pro výstup do (E)PS,proi jiné formáty, např. png, se použije implicitní font; je však možné doinstalovat TrueType fonty)

print('graf.png','­dpng','­landscape','­FArial:18');  

Příklad: Uložte váš graf (viz minulý úkol) do postscriptu, png nebo jiného formátu (viz help print)

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

více grafů v jednom grafuvíce grafů v jednom grafupříkaz subplot(N,M,Index), kde N – počet grafů v “řádku matice”                                                  M – počet grafů ve “sloupci matice”                                                  Index­ který graf se bude kreslit

x=[0:0.06:2*pi];y=sin(x);subplot(2,2,1);plot(x,y,"@12;2,2,1;");subplot(2,2,2);y2=cos(x);plot(x,y2,"k­;2,2,2;");subplot(2,2,3);y3=cos(x)+sin(x);plot(x,y3,"m+;2,2,3;")subplot(2,2,4);y4=cos(x)­sin(x);plot(x,y4,"c­;2,2,4;");

tisk pomocí příkazu print

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

více grafů v jednom grafu  ­ Matlabvíce grafů v jednom grafu  ­ Matlab

clear all;x=[0:0.06:2*pi];y=sin(x);subplot(2,2,1);plot(x,y,'bd');legend('2,2,1');subplot(2,2,2);y2=cos(x);plot(x,y2,'k­');legend('2,2,2');subplot(2,2,3);y3=cos(x)+sin(x);plot(x,y3,'m+')legend('2,2,3');subplot(2,2,4);y4=cos(x)­sin(x);plot(x,y4,'c­');legend('2,2,4');

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

uložení grafu v Matlabu (stačí kliknout)uložení grafu v Matlabu (stačí kliknout)

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

3D grafy v Octave3D grafy v Octave

máme data uložená ve 3 sloupcích X,Y,Z a chceme zobrazit graf

f2db=[x' y' z'];[m,X,Y]=tab2mat(b,1,2,3);surf(X,Y,m);

f2db=[x' y' z'];[m,X,Y]=tab2mat(b,1,2,3);contour(X,Y,m);

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

surf(X,Y,m);contour(X,Y,m);

imagesc(X,Y,m);

3D grafy v Octave3D grafy v Octave

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

3D grafy v Octave a Matlabu3D grafy v Octave a Matlabu

zatím jsme uvažovali kreslení 3D grafů funkcí, popř. dat, které jsou ekvidistatní v x a ytoto však není v reálu často splněno (např. v rtg.difrakci, kdy měříme v ekvidistatníchintervalech úhlů, ale tzv. mapy reciprokého prostoru se vyjadřují pomocí složek vektorureciprokého prostoru q, které však po přepočtu z úhlů už ekvidistantní nejsou.

funkce   [gridX,gridY]=meshgrid(X,Y);funkce    [gridX,gridY]=griddata(X,Y,Z,gridX,gridY);

function [m,qx,qz]=GridMyMap(data,Nx,Ny)% funkce [m,qx,qz]=GridMyMap(data,Nx,Ny) griduje% data ulozena v poli Nx3 data, Nx a Ny je pocet hodnot% podel x a y% funkce vraci matici m a vektory qx a qz

   qx=linspace(min(data(:,1)),max(data(:,1)),Nx);   qz=linspace(min(data(:,2)),max(data(:,2)),Ny);   [QX,QZ]=meshgrid(qx,qz);   m=griddata(data(:,1),data(:,2),data(:,3),QX,QZ);   %hledani NaN   n=isnan(m);   m(n)=0.0;

(viz help meshgrid, griddata)

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

grafy v polárních souřadnicíchgrafy v polárních souřadnicích

příkaz polar(uhel, r, FMT)

t = 0:.01:2*pi;polar(t,sin(2*t).*cos(2*t),'­­r');

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

a teď GnuPlota teď GnuPlot

2d grafy: příkaz plot

plot 'data.dat' u 1:2 title 'moje data' w p ps 2  ,  'data.dat' u 1:3 title 'co melo vyjit' w l 

použije 1 sloupec dat jako xa 2 sloupec jako y

data vykreslí body(w p = with points)velikost symbolu 2 ps 2 = pointsize 2

data vykreslí čarou(w l = with line)

with (w) lp = linespoints (body i čáry)             impulses = impulsový graf

logaritmické osy: set logscale x, set logscale y (unset)

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

3d grafy: příkaz splot

splot 'data.dat' u 1:2:3 title 'moje data'

splot sin(sqrt(x**2+y**2))/sqrt(x**2+y**2)set isosamples 50,50replot

pm3d

set pm3d at sreplotset palette defined ( 0 "blue", 3 "green", 6 "yellow", 10 "red" )replotset pm3d at bsreplot

   

Grafické výstupy v Octave/MatlabuGrafické výstupy v Octave/Matlabua GnuPlotua GnuPlotu

Úvod do programování v prostředích Octave, Scilab a Matlab

GnuPlotGnuPlot

set encoding – nastavení kódování (např. set encoding iso_8859_1)set xlabel – nastavení popisu x­ové osy (set xlabel 'osa x') (totéž platí pro y(z)label )set title – nastavení titulku grafu (set title 'Muj Prvni Graf')set xrange [od:do] – nastavení rozsahu osy x (stejné platí pro y(z)range);                                 pokud je místo nějaké hodnoty uvedena *, nastaví se rozsah                                 automaticky (set xrange [­1:1], set xrange [*:10])set terminal – udává výstupní zařízení, tj. kam se bude vykreslovat/tisknout graf                      set term win, set term x11, set term postscript, set term pdf, set term jpg...set size  – nastavuje velikost obrázku; možno zadat set size ratio square (obrázek bude                 čtvercový), set size ratio 2 – obrázek bude mít poměr š x v=1x2

více (včetně demonstračních souborů a ukázek) na www.gnuplot.info