Institutt for geofag Universitetet i Oslo 11. september 212
plotfunksjonen Den vanligste funksjonen for å plotte 2D-data i MatLab er plotfunksjonen Funksjonen plotter vektorer med data og lager rette linjer mellom datapunktene For å lage en graf brukes kommandoen plot(y) eller plot(x,y) Husk at vi i MatLab ikke skriver f(x), så y=f(x)
plotfunksjonen Her gir vi kun y-vektoren som argument i plotfunksjonen x-aksen angir kun antall punkter(objekter) i y-vektoren 1 %x-verdier mellom % og 2pi >> x=:.1*pi:2*pi; >> y=sin(x); >> plot(y).8.6.4.2.2.4.6.8 1 5 1 15 2 25
plotfunksjonen Her gir vi både x-vektoren og y-vektoren som argumenter i plotfunksjonen x-aksen angir nå x-verdiene 1 %x-verdier mellom % og 2pi >> x=:.1*pi:2*pi; >> y=sin(x); >> plot(x,y).8.6.4.2.2.4.6.8 1 1 2 3 4 5 6 7
Spesifisere fargen på grafen med predefinerte farger Vi kan spesifisere hvilken farge vi vil ha på grafen ved å bruke MatLabs predefinerte fager eller vi kan lage vår egen For å angi predefinerte farger skriver vi fargekommandoen i fnutter: plot(x,y, r ). r : rød %x-verdier mellom % og 2pi >> x=:.1*pi:2*pi; >> y=sin(x); >> plot(x,y, r ) 1.8.6.4.2.2.4.6.8 1 1 2 3 4 5 6 7
Predefinerte farger i MatLab MatLab bruker RGB triple: det er en radvektor med 3 objekter, der hvert objekt spesifiserer intensiteten av fargekomponentene: Rød, Grønn og Blå Intensiteten på fargekomponentene har verdier mellom og 1 RGB Symbol Farge [ 1] b blå (default) [ 1 ] g grønn [1 ] r rød [ 1 1] c cyan [1 1] m magneta [1 1 ] y gul [ ] k sort [1 1 1] w hvit
Spesifisere fargen på grafen med Color Hvis vi istedenfor vil angi vår egen farge skriver vi: plot(x,y, Color, [.7.2.7]) Kommandoen Color forteller MatLab at vi sender inn en vektor med fargeintensiteter, [.7.2.7]. Dere kan sette alle mulige verdier mellom og 1 %x-verdier mellom % og 2pi >> x=:.1*pi:2*pi; >> y=sin(x); >> plot(x,y, Color,[.7.2.7]) 1.8.6.4.2.2.4.6.8 1 1 2 3 4 5 6 7
Linjetykkelse: Linewidth Kommandoen LineWidth endrer tykkelsen på grafen: plot(x,y, LineWidth, 4) Kommandoen LineWidth forteller MatLab at vi sender inn et tall som angir tykkelsen på grafen. Tallene som angir tykkelse øker med.5 dvs..5, 1, 1.5, 2, 2.5 osv. %x-verdier mellom % og 2pi >> x=:.1*pi:2*pi; >> y=sin(x); >> plot(x,y, LineWidth,4) 1.8.6.4.2.2.4.6.8 1 1 2 3 4 5 6 7
Linjetype: LineStyle Vi kan endre typen linje vi vil ha mellom datapunktene Kommandoen LineStyle forteller MatLab at vi sender inn en tekst som angir type linje Symbol Linjetype heltrukket linje (default) : punktert linje -- stiplet linje -. stiplet-punktert linje none ingen linje
Linjetype: LineStyle Vi kan endre linjen ved å skrive plot(x,y, LineStyle, -- ) I kombinasjon med predefinerte farger trenger vi ikke skrive LineStyle. Kommandoen plot(x,y, r--, LineWidth,2) gir oss en rød, stiplet linje med dobbelt tykkelse. 1 %x-verdier mellom % og 2pi >> x=:.1*pi:2*pi; >> y=sin(x); >> plot(x,y, r--, LineWidth,2).8.6.4.2.2.4.6.8 1 1 2 3 4 5 6 7
Predefinerte datapunktmakører i MatLab: Marker Hvis du ønsker å uheve datapunktene kan du bruke datapunktmarkører Makøren settes gjerne sammen med fargekommandoen eller du kan bruke kommandoen Marker Symbol Markør Symbol Markør. punkt o sirkel x kryss + pluss tegn * asterisk s firkant d diamant trekant(opp) < trekant(venstre) > trekant (høyre) p pentagram h hexagram
Datapunkter: Marker 1.8.6.4.2.2.4.6.8 1 1 2 3 4 5 6 7 >> plot(x,y, Color, g, LineWidth,3, LineStyle, -., Marker, d, MarkerEdgeColor, r )
Datapunkter: Marker 1.8.6.4.2.2.4.6.8 1 1 2 3 4 5 6 7 >> plot(x,y, rd-. )
Spesifisering av tittel på figur og akser For å skrive tittel på figuren, bruk kommandoen: title( Her skriver du tittelen ) For å skrive navn på aksene, bruk kommandoene: xlabel( Tittel på x-aksen ) ylabel( Tittel på y-aksen )
Spesifisering av tittel på figur og akser 1.8.6.4.2 Sinusfunksjonen sin(x).2.4.6.8 1 1 2 3 4 5 6 7 < x < 2pi % 3 punktum gir linjeskift midt i koden >> plot(x,y, Color, g, LineWidth,3,... LineStyle, -., Marker, d, MarkerEdgeColor, r ) >> title( Sin(x) ) >> xlabel( < x < 2pi ) >> ylabel( sin(x) )
Tekstkommandoer: For å spesifisere teksttype og tekststørrrelse For å få tekst i bold face, bruk kommandoen: \bf For å få tekst i kursiv, bruk kommandoen: \it For å endre skriftstørrelse, bruk kommandoen: Fontsize, tall (som angir str.) For å få en tekst over flere linjer: { Teksten i linje 1 ; Teksten i linje 2 }
Spesifisering av tittel på figur og akser sin(x) 1.8.6.4.2.2.4 Sinusfunksjonen er en finfin funksjon.6.8 1 1 2 3 4 5 6 7 < x < 2pi % 3 punktum tilater linjeskift midt i koden >> title({ \bf Sinusfunksjonen ; er en finfin funksjon }..., FontSize,14) >> xlabel( \bf < x < 2pi, Fontsize,13) >> ylabel( \it sin(x), Fontsize,13)
Spesifisering av aksene: axis( square ) og axis( equal ) Kommandoen axis( square ) gir deg en kvadratisk figur Kommandoen axis( equal ) gir deg samme målestokk på begge aksene sin(x) 1.8.6.4.2.2.4.6.8 Sinusfunksjonen er en finfin funksjon 1 1 2 3 4 5 6 7 < x < 2pi >>axis( square ) sin(x) 2 1.5 1.5.5 1 1.5 2 Sinusfunksjonen er en finfin funksjon 1 2 3 4 5 6 < x < 2pi >>axis( equal )
Spesifisering av aksene: axis(), xlim(), ylim() Du kan gi selv angi akseverdiene axis([xmin Xmax Ymin Ymax]) Du kan istedenfor bruke kommandoene (for samme resultat): xlim([xmin Xmax]) ylim([ymin Ymax])
Spesifisering aksene: axis(), xlim(), ylim() sin(x) 1.8.6.4.2.2.4 Sinusfunksjonen er en finfin funksjon.6.8 1 1 2 3 4 5 6 < x < 2pi >>axis([ 2*pi -1 1]) % eller >>xlim([ 2*pi]) >>ylim([-1 1])
Spesifisering aksene: grid on Ønsker du at gridet vises i figuren, bruk kommandoen: grid on Ønsker du gridet fjernet igjen, skriv: grid off sin(x) 1.8.6.4.2.2 Sinusfunksjonen er en finfin funksjon >> grid on.4.6.8 1 1 2 3 4 5 6 < x < 2pi
: hold on Vi kan plotte så mange grafer vi vil i Bruk kommandoen: hold on x=linspace(,4*pi,1); y=sin(x); f=cos(x); plot(x,y, g, LineWidth,3) hold on plot(x,f, r--, LineWidth,3) xlabel( \bf x, FontSize,14) ylabel({ \bf sin(x) ; cos(x) }, FontSize,14) title( \bf Sinus og Cosinus, FontSize,16) xlim([ 4*pi]) %hvis jeg ikke vet min og max verdi kan jeg bruke ylim([min(f) max(f)])
: hold on sin(x) cos(x) 1.8.6.4.2.2.4.6.8 Sinus og Cosinus 2 4 6 8 1 12 x
Forklaring av grafene: legend() Kommandoen legend( navn første graf, navn andre graf ) brukes om du vil navngi de ulike grafene i figuren 1.8.6 Sinus og Cosinus sin(x) cos(x).4 sin(x) cos(x).2.2.4 >> legend( sin(x), cos(x) ).6.8 2 4 6 8 1 12 x
Forklaring av grafene: legend() Du kan også spesifisere hvor navnene skal så Bruk legend( navn første graf, navn andre graf, Location, EastOutside ) 1.8 Sinus og Cosinus sin(x) cos(x).6.4.2.2 sin(x) cos(x).4.6.8 2 4 6 8 1 12 x >> legend( sin(x), cos(x), Location, EastOutside )
Spesifisering grafene: legend() Plasseringen av navnene angir du etter Location Her er noen plasseringer, resten er kombinasjoner av disse. Du finner dem ved å søke i help Spesifikasjon North South East West NorthEast NorthEastOutside NorthOutside Best BestOutside Posisjon Innside, øverst Innside, bunn Innside, høyre Innside, venstre Innside, øverst til høyre Utside, øverst til høyre Utside, topp Innside, i minst konflikt med data Utside, på mest ubrukt plass
Ny figur: figure() Når du bruker plot(x,y) åpner MatLab et nytt vindu, som kalles Figure Window Om et figurvindu allerede er åpent når du bruker plot(x,y), sletter MatLab det som er i vinduet og plotter på nytt Derfor kan det være lurt å lage et nytt figurvindu hver gang du plotter. Bruk du kommandoen figure eller figure(n), hvor n angir nummeret på figuren
Ny figur: figure() Skal du på et senere tidspunkt fortsette å plotte i en av figurene, f.eks. figur nr. 2, skriver du bare figure(2), etterfulgt av hold on, så koden for det du vil plotte For å lukke en figur, f.eks. figur nr. 2, bruk kommandoen: close figure(2) For å lukke alle figurene du har, bruk kommandoen: close all
Flere små i : subplot() Kommandoen subplot(m,n,p) deler figurvinduet inn i m n vinduer og velger vindu nummer p til å være det aktive vinduet (altså det du plotter i) Vinduene i figuren er numerert fra venstre til høyre langs den første raden, så den andre raden osv. Alle egenskapene til grafen din (som farger, akser o.l.) må spesifiseres for hvert vindu
Flere små i : subplot() Et eksempel: (ps. koden står egentlig under hverandre) close all; clear all x=linspace(,4*pi,1); y=sin(x); f=cos(x); a=2*sin(x).*cos(x); b=sin(x)./(cos(x)+eps); subplot(2,2,1) plot(x,y, r--, Linewidth,2) axis([ 4*pi -1 1]) title( \bf sin(x), fontsize,14) xlabel( x ) ylabel( y ) subplot(2,2,2) plot(x,f, g--, Linewidth,2) axis([ 4*pi -1 1]) title( \bf cos(x), fontsize,14) xlabel( x ) ylabel( y ) subplot(2,2,3) plot(x,a, b-., Linewidth,2) axis([ 4*pi min(a) max(a)]) title( \bf 2sin(x)cos(x), fontsize,14) xlabel( x ) ylabel( y ) subplot(2,2,4) plot(x,b, k, Linewidth,2) axis([ 4*pi min(b) max(b)]) title( \bf sin(x)/(cos(x)+eps), fontsize,14) xlabel( x ) ylabel( y )
Flere små i : subplot() 1.5 sin(x) 1.5 cos(x) y y.5 1 5 1 x 2sin(x)cos(x).5.5 5 1 x y y.5 1 5 1 x sin(x)/(cos(x)+eps) 5 5 5 1 x
Flere små i : subplot() Legg merke til at ALLE plot-egenskapene gjelder også når vi bruker subplot(): close all; clear all x=linspace(,4*pi,1); y=sin(x); f=cos(x); a=2*sin(x).*cos(x); b=sin(x)./(cos(x)+eps); subplot(1,2,1) plot(x,y, r--, Linewidth,2) hold on plot(x,f, g--, Linewidth,2) axis([ 4*pi -1 1]) title( \bf sin(x) og cos(x), fontsize,14) xlabel( x ) ylabel( y ) legend( sin(x), cos(x), location, best ) subplot(1,2,2) plot(x,f, Linewidth,2) axis([ 4*pi -1 1]) title( \bf cos(x), fontsize,14) xlabel( x ) ylabel( y )
Flere små i : subplot() y 1.8.6.4.2.2.4.6.8 sin(x) og cos(x) sin(x) cos(x) 1 5 1 x y 1.8.6.4.2.2.4.6.8 cos(x) 1 5 1 x
: errorbar(x,y,e) Kommandoen errorbar(x,y,e) lager et linjeplot, men viser også feilmarginer i hvert datapunkt For å bruke denne må du ha beregnet feilmarginene i hvert datapunkt og lagt disse i en vektor E errorbar(x,y,e) %vektor med 21 punkter x=linspace(,2,21); %y er errorfunksjonen til x %errorfunksjonen er definert i MatLab som erf() y=erf(x); % E inneholder random error verdier E=rand(size(x))/1; % lager plot med feilmarginer errorbar(x,y,e, LineWidth,2) %tittel maa vi ha: title( \bf Errorbarfigur, Fontsize,16) xlabel( \bf x, Fontsize,14) ylabel( \bf erf(x), Fontsize,14)
: errorbar(x,y,e) erf(x) 1.2 1.8.6.4.2 Errorbarfigur.2.5.5 1 1.5 2 2.5 x
Søyleplot: bar() For å lage et søylediagram kan du bruke kommandoen: bar(y) eller bar(x,y) x angir x-akse intervallene og må ha stigende verdi >> x=-2.9:.2:2.9; >> y=exp(-x.^2); >> bar(x,y) 1.9.8.7.6.5.4.3.2.1 3 2 1 1 2 3
Søyleplot: hist() For å lage et histogram kan du bruke kommandoen: hist(y), hist(y,x) eller hist(y,n) x spesifiserer søyle-intervallene og må ha stigende verdi n er et tall og angir antall søyler
Søyleplot: hist(y,x) hist(y,x) >> %spesifiserer soyler >> x=-2.9:.2:2.9; >> %genererer 5 tilfeldige dataobjekter >> y=randn(5,1); >> %lager et histogram >> hist(y,x); >> title( Histogram over gaussian Data, fontsize,15) 45 4 35 3 25 2 Histogram over Gaussian Data 15 1 5 4 3 2 1 1 2 3 4
Søyleplot: hist(y,n) hist(y,n) >> %spesifiserer soyler >> x=-2.9:.2:2.9; >> %genererer 5 tilfeldige dataobjekter >> y=randn(5,1); >> %lager et histogram >> hist(y,1); >> title( Histogram over gaussian Data, fontsize,15) 15 1 5 Histogram over Gaussian Data 4 3 2 1 1 2 3 4 5
: line() Vil du plotte en rett(e) linje(r) i figuren din bruker du kommandoen: line(x,y) x,y er vektorer med x og y koordinatene 2 1.8 1.6 1.4 1.2 1.8.6.4.2.5 1 1.5 2 2.5 3 3.5 4 >> line([ 1 4], [ 1 2], Linewidth,3)
Andre plotfunksjoner: For logaritmiske grafer Disse er IKKE pensum Andre nyttige plotfunksjoner: semilogx(x,y): logaritmisk x-akse semilogy(x,y): logaritmisk y-akse loglog(x,y): logaritmisk på begge akser
For å lagre figurene dine Nyttige kommandoer: Lagre figuren til filen figur.eps: >> print -deps figur.eps Lagre figuren i farger til filen figur.eps: >> print -depsc2 figur.eps Lagre figuren i jpeg-format til filen figur.jpg: >> print -djpeg figur.jpg...eller trykk på lagre-ikonet øverst på figuren
Tekstkommandoer: For å inkludere tegn i tekst Dette er IKKE pensum! Men veldig nyttig:-) Kommandoene kan dere skrive inn i tekststrenger (titler, aksenavn, legends o.l.) om dere ønsker symbolene under NB! Husk backslash! Kommando Symbol Kommando Symbol Kommando Symbol \alpha α \beta β \chi ξ \delta δ \epsilon ǫ \theta θ \gamma γ \eta η \phi φ \pi π \kappa κ \lambda λ \rho ρ \sigma σ \tau τ \zeta ζ \geq \leq \infty \leftarrow \rightarrow \uparrow \downarrow \leftrightarrow \clubsuit \diamondsuit \heartsuit \spadesuit \pm ± \partial
Tekstkommandoer: inkludere symboler i tekst Dette er IKKE pensum! Men veldig nyttig:-) >>xlabel( \bf \leq x \leq 2\pi, FontSize,16) 1 Sinus og Cosinus sin(x) cos(x).8.6.4.2.2.4.6.8 2 4 6 8 1 12 x 2π sin(x) cos(x)
Tekstkommandoer: XTick og XTicklabel Dette er IKKE pensum! Men veldig nyttig:-) Nyttige kommandoer: Hvis du vil redefinere antall punkter som vises på x-aksen bruker du kommandoen set(gca, XTick,xx), der xx er en vektor med de nye x-punktene Hvis du vil redefinere navnet på punktene på x-aksen bruker du set(gca, XTickLabel, xnavn), der xnavn er en vektor med strengobjekter og som har samme lengde som det er punkter på x-aksen Om du ønsker å redefinere y-aksen istedenfor, bruker du set(gca, YTick,yy) og set(gca, YTickLabel, ynavn) gca: get current axis
Tekstkommandoer: XTick og XTicklabel Dette er IKKE pensum! Men veldig nyttig:-) Endre x-labels på histogram: %gj.snitt temperatur data for en mnd temp=[12 1 1 13 12 18 1 17 1 18 13 15 14 17,... 18 15 13 16 17 15 14 16 12 1 1 13 12 18 1 17 1 ]; subplot(1,2,1) hist(temp,4) ylabel( \bf Dager ) xlabel( \bf Temperatur ) title({ \bf Temperatur i \circ C ; Endrer ikke XTickLabel } ) subplot(1,2,2) hist(temp,4) set(gca, XTickLabel,{ 1-12, 12-14, 14-16, 16-18 }) ylabel( \bf Dager ) xlabel( \bf Temperatur ) title({ \bf Temperatur i \circ C ; Endrer XTickLabel } )
Tekstkommandoer: XTick og XTicklabel Dette er IKKE pensum! Men veldig nyttig:-) Endre x-labels på histogram: 12 Temperatur i C Endrer ikke XTickLabel 12 Temperatur i C Endrer XTickLabel 1 1 8 8 Dager 6 Dager 6 4 4 2 2 11 13 15 17 Temperatur 1 12 12 14 14 16 16 18 Temperatur
Tekstkommandoer: XTick og XTicklabel Dette er IKKE pensum! Men veldig nyttig:-) Endre x-labels på linjeplot: x=-pi:.1:pi; y=sin(x); plot(x,y, k--, Linewidth,2) xlabel( -\pi \leq x \leq \pi, fontsize,14) ylabel( sin(x), fontsize,14) title( Sinusfunksjonen, fontsize,16) axis([-pi pi -1 1]) set(gca, XTick,-pi:pi/2:pi) set(gca, XTicklabel,{ -p, -p/2,, p/2, p },... fontname, symbol, fontsize,16)
Tekstkommandoer: XTick og XTicklabel Dette er IKKE pensum! Men veldig nyttig:-) Endre x-labels på linjeplot: 1 Sinusfunksjonen.5 sin(x).5 1 π π/2 π/2 π π x π
Fargekommandoer: Endre fare på figur Dette er IKKE pensum! Men veldig nyttig:-) Nyttige kommandoer: set(gcf, Color, r ) eller set(gcf, Color,[1 ]): endrer farge på utsiden av figuren set(gca, Color, g ) eller set(gca, Color,[ 1 ]): endrer farge på innsiden av figuren gcf: get current figure gca: get current axis
Fargekommandoer: Endre fare på figur Dette er IKKE pensum! Men veldig nyttig:-) %gj.snitt temperatur data for en mnd temp=[12 1 1 13 12 18 1 17 1 18 13 15 14 17,... 18 15 13 16 17 15 14 16 12 1 1 13 12 18 1 17 1 ]; subplot(1,2,1) %plotter firkanter i cyan plot(temp, cs-, Linewidth,2) %setter gronn bakgrunnsfarge utenfor figuren set(gcf, Color, g ) %setter magneta bakgrunnsfarge inni figuren set(gca, Color, m ) xlabel( \bf Dager ) ylabel( \bf Temperatur ) title( \bf Temperatur i \circ C ) subplot(1,2,2) %plotter hvite diamanter plot(temp, wd-, Linewidth,2) %setter sort bakgrunnsfarge inni figuren set(gca, Color, k ) xlabel( \bf Dager ) ylabel( \bf Temperatur ) title( \bf Temperatur i \circ C )
Fargekommandoer: Endre fare på figur Dette er IKKE pensum! Men veldig nyttig:-) L A TEX(programkoden jeg programmerer slidene i) vil ikke vise figuren med grønn bakgrunnsfarge,men den er grønn! Bare prøv! 18 17 Temperatur i C 18 17 Temperatur i C Temperatur 16 15 14 13 12 11 1 1 2 3 4 Dager Temperatur 16 15 14 13 12 11 1 1 2 3 4 Dager