How to set axis limits in MATLAB?

Indstil aksegrænser i MATLAB: Den komplette guide

01/10/2012

Rating: 4.96 (13214 votes)

At skabe informative og letlæselige plots er en kernekompetence, når man arbejder med dataanalyse i MATLAB. En af de mest grundlæggende, men også vigtigste, aspekter af datavisualisering er evnen til at kontrollere aksegrænserne. Standardindstillingerne i MATLAB er ofte gode, men for at fremhæve specifikke dataområder, sammenligne flere plots eller skabe figurer til publikationer, er det afgørende at kunne tilpasse x-, y- og z-akserne præcist. Denne artikel vil guide dig igennem de forskellige metoder til at indstille aksegrænser, fra de simple og hurtige funktioner til de mere avancerede og fleksible teknikker.

What is XLIM function in MATLAB?
"xlim ()" Function - The "xlim ()" function is used to adjust X-axis limit of a plot in MATLAB. "ylim ()" Function - The "ylim ()" function is used to adjust Y-axis limit of a plot in MATLAB. "axis ()" Function - The "axis ()" function is used to adjust both X-axis and Y-axis limits simultaneously or automatically.
Indholdsfortegnelse

Hvorfor er det vigtigt at justere aksegrænser?

Før vi dykker ned i koden, er det værd at forstå, hvorfor man overhovedet skal bekymre sig om aksegrænser. Korrekt indstillede grænser kan:

  • Fokusere på det væsentlige: Ved at zoome ind på et bestemt interval kan du fremhæve vigtige tendenser, skæringspunkter eller outliers, som ellers ville være usynlige i et fuldt overblik.
  • Fjerne unødvendig plads: MATLAB kan nogle gange efterlade for meget tomt rum omkring dine data. Ved at stramme grænserne opnår du et renere og mere professionelt udseende.
  • Standardisere plots: Når du skal sammenligne flere datasæt i separate plots, er det essentielt, at de har de samme aksegrænser for at give en fair og direkte visuel sammenligning.
  • Forbedre læsbarheden: Ved at vælge 'pæne' tal til dine grænser (f.eks. 0 til 100 i stedet for 3,7 til 98,2) kan du gøre dit plot lettere at fortolke for andre.

Den grundlæggende metode: axis()-funktionen

Den mest alsidige og almindeligt anvendte funktion til at styre aksegrænser er axis(). Den kan bruges til at indstille grænserne for alle akser på én gang og har desuden en række indbyggede kommandoer til at justere plottets udseende og proportioner.

Indstilling af numeriske grænser

Den primære anvendelse af axis() er at specificere minimum- og maksimumværdier for akserne. Dette gøres ved at give funktionen en vektor med fire (for 2D) eller seks (for 3D) elementer.

Syntaksen for et 2D-plot er:

axis([xmin xmax ymin ymax])

Her er et eksempel. Først plotter vi en simpel sinuskurve med MATLABs standardgrænser:

x = linspace(0, 2*pi, 100); y = sin(x); plot(x, y); title('Standard aksegrænser'); 

Nu anvender vi axis() for at zoome ind på den første positive top af kurven:

x = linspace(0, 2*pi, 100); y = sin(x); plot(x, y); axis([0 pi 0 1.2]); title('Tilpassede aksegrænser med axis()'); 

For et 3D-plot udvides vektoren til at inkludere z-aksens grænser:

axis([xmin xmax ymin ymax zmin zmax])

Udforsk flere axis()-kommandoer

axis() kan meget mere end blot at sætte numeriske grænser. Ved at give den en tekststreng som argument kan du hurtigt ændre plottets opførsel. Her er en oversigt over de mest nyttige kommandoer:

KommandoBeskrivelse
axis autoGenskaber MATLABs standardgrænser baseret på dataene. Dette er standardadfærden.
axis tightSætter grænserne, så de passer tæt omkring dataene uden ekstra margin.
axis equalJusterer grænserne, så en dataenhed har samme visuelle længde på x- og y-aksen. Vigtigt for at cirkler ser runde ud.
axis squareGør selve plot-boksen kvadratisk, uanset dataenhedernes proportioner.
axis offSkjuler akserne, inklusiv aksemærker og labels.
axis onViser akserne igen (standard).

Fokuseret kontrol: xlim(), ylim() og zlim()

Hvis du kun ønsker at ændre grænserne for en enkelt akse, er det ofte mere læsbart og direkte at bruge de specifikke funktioner: xlim(), ylim() og zlim(). Disse funktioner giver en mere målrettet kontrol og gør din kode lettere at forstå.

Syntaksen er ens for alle tre:

xlim([xmin xmax]) ylim([ymin ymax]) zlim([zmin zmax]) 

Lad os tage det tidligere sinuseksempel og kun justere y-aksen for at give mere luft over kurven:

x = linspace(0, 2*pi, 100); y = sin(x); plot(x, y); title('Justeret Y-akse med ylim()'); ylim([-1.5 1.5]); % Standard x-akse, men justeret y-akse 

En meget nyttig egenskab ved disse funktioner er, at hvis du kalder dem uden argumenter, returnerer de de nuværende grænser for den pågældende akse. Dette er praktisk, hvis du vil gemme de nuværende grænser, foretage en ændring og senere gendanne dem.

current_xlim = xlim; % Gemmer nuværende x-grænser disp('Nuværende x-grænser er:'); disp(current_xlim); 

En mere avanceret tilgang: set()-funktionen

For endnu større fleksibilitet, især i scripts og funktioner, kan du bruge set()-funktionen. Denne funktion er en del af MATLABs grafiksystem (Handle Graphics) og kan ændre enhver egenskab ved et grafisk objekt, herunder aksegrænserne.

For at bruge den skal du først have et 'handle' (en reference) til det akseobjekt, du vil ændre. Den nemmeste måde at få dette på er med funktionen gca (Get Current Axes).

Syntaksen ser således ud:

set(gca, 'EgenskabsNavn', [min max])

Egenskabsnavnene for grænser er 'XLim', 'YLim' og 'ZLim' (bemærk de store bogstaver).

x = linspace(-10, 10, 200); y = x.^2; plot(x, y); title('Grænser sat med set()'); % Sæt x-aksens grænser set(gca, 'XLim', [-5 5]); % Sæt y-aksens grænser set(gca, 'YLim', [0 30]); 

Denne metode er kraftfuld, fordi den giver dig mulighed for at ændre mange egenskaber på én gang i en struktureret form.

Moderne MATLAB: Den objektorienterede metode

I nyere versioner af MATLAB er den anbefalede praksis at bruge en mere objektorienteret tilgang. Dette gør koden endnu mere læsbar og robust, især når du arbejder med flere plots i samme figurvindue (f.eks. med `subplot`).

Princippet er det samme som med `set()`, men syntaksen er mere intuitiv. Først får du et handle til aksen, og derefter ændrer du dens egenskaber direkte ved hjælp af punktnotation.

ax = gca; % Få et handle til de nuværende akser og gem det i variablen 'ax' % Nu kan du tilgå egenskaberne direkte ax.XLim = [-5 5]; ax.YLim = [0 30]; ax.Title.String = 'Grænser sat med objektorienteret metode'; ax.XLabel.String = 'X-akse'; 

Denne metode er den mest moderne og giver den største fleksibilitet. Den er især overlegen, når du har flere subplots, da du kan gemme et handle for hver akse og modificere dem uafhængigt af hinanden.

Sammenligning af metoderne

Hvilken metode skal du vælge? Det afhænger af situationen. Her er en hurtig sammenligningstabel:

Funktion/MetodeAnvendelseFordeleUlemper
axis([...])Hurtig indstilling af alle akser på én gang. God til interaktivt arbejde.Kompakt syntaks, mange indbyggede kommandoer (tight, equal).Mindre læsbart hvis kun én akse skal ændres.
xlim(), ylim()Målrettet justering af en enkelt akse.Meget læsbar og eksplicit kode. Kan også hente nuværende grænser.Kræver flere linjer kode for at ændre flere akser.
set(gca, ...)Scripting og funktioner, hvor mange egenskaber skal ændres.Meget kraftfuld, kan ændre alle grafiske egenskaber.Lidt forældet syntaks; kan være mindre intuitiv.
ax.XLim = ...Moderne MATLAB-kode, især ved håndtering af flere plots eller komplekse figurer.Den mest læsbare, robuste og fleksible metode. Anbefalet praksis.Kræver en ekstra linje for at få akse-handlet (`ax = gca`).

Ofte Stillede Spørgsmål (FAQ)

Hvordan kan jeg sætte en semi-åben grænse, f.eks. fra 0 og opefter?

Du kan bruge inf (uendelig) til at lade MATLAB automatisk bestemme den øvre eller nedre grænse. For eksempel, for at sætte x-aksen fra 0 og lade den øvre grænse være automatisk, kan du skrive: xlim([0 inf]).

Hvordan vender jeg retningen på en akse?

Du kan simpelthen bytte om på minimum- og maksimumværdierne. For at få y-aksen til at gå fra 100 ned til 0, skal du skrive: ylim([0 100]). MATLAB vil automatisk vende aksen.

Hvad er forskellen mellem axis equal og axis square?

axis equal påvirker dataenhederne, så en enhed på x-aksen er lige så lang som en enhed på y-aksen. Dette er vigtigt for korrekte geometriske fremstillinger (f.eks. en cirkel). axis square påvirker selve plot-boksen og tvinger den til at være kvadratisk, uanset data-proportionerne. Et plot kan være `equal` uden at være `square`, og omvendt.

Hvorfor ændrer mine aksegrænser sig ikke?

Den mest almindelige fejl er at kalde xlim() eller axis() *før* du kalder plot(). Plot-kommandoen vil typisk nulstille akserne. Sørg altid for at indstille dine grænser *efter* du har plottet dine data.

Konklusion

At have fuld kontrol over aksegrænserne i MATLAB er en fundamental færdighed, der løfter kvaliteten af dine visualiseringer markant. Vi har dækket fire primære metoder: den alsidige axis()-funktion for hurtige, overordnede justeringer; de specifikke xlim() og ylim()-funktioner for klar og målrettet kontrol; den traditionelle set()-funktion for scripting; og den moderne, objektorienterede tilgang for den mest robuste og læsbare kode. Ved at vælge den rette metode til opgaven kan du sikre, at dine plots ikke kun er korrekte, men også effektive til at kommunikere dine resultater.

Hvis du vil læse andre artikler, der ligner Indstil aksegrænser i MATLAB: Den komplette guide, kan du besøge kategorien Træ.

Go up