As data visualizers, MATLAB developers must utilize effective plot axis ranging to reveal key patterns. However, default axis limit selection often obscures critical data features. By manually customizing x and y-axis bounds with built-in functions, you can focus on significant traits like local maxima, distribution shapes, uncertainties, and multi-dataset overlays. This comprehensive guide dives into professional programmatic techniques, troubleshooting, and perceptual best practices for optimal modification of axis scale, range, and styling in MATLAB plots.

Why Axis Limit Configurability is Vital

MATLAB‘s default axis scaling simply spans the minimum to maximum value along each dimension. However, revealing true data insights requires more selective axis configuration to highlight significant patterns. Consider visualizing two overlaid normal distributions:

x = -5:0.1:5;
y1 = normpdf(x, 0, 1); 
y2 = normpdf(x, 1, 0.5);

plot(x, y1, ‘LineWidth‘, 2)
hold on  
plot(x, y2, ‘r‘, ‘LineWidth‘, 2)  
legend({‘Distribution 1‘, ‘Distribution 2‘})

Default overlaid plots MATLAB

With default ranging, both complete distribution shapes are not simultaneously visible. By manually setting identical x and y-axis limits across both lines via xlim and ylim, you can properly compare their forms:

xlim([-5 5])  
ylim([0 0.5])

Adjusted axes overlaid plots MATLAB

Custom limits reveal the narrower spread of Distribution 2. This specific example highlights the importance of manual axis configuration for:

  • Overlay visualization: Match axes to simultaneously inspect multiple plots
  • Distribution analysis: Reveal shape characteristics like normality and spread
  • Feature emphasis: Focus viewer attention on aspects like peaks

Built-in Tools to Modify Axis Limits

MATLAB incorporates several functions to customize axis ranges programmatically:

Set x and y limits simultaneously:

axis([xmin xmax ymin ymax])

Set x-axis lower and upper bounds:

xlim([xmin xmax])

Set y-axis lower and upper bounds:

ylim([ymin ymax])   

You can also use these functions with logarithmic plots:

loglog(x, y) 
axis([1e2 1e5 1e-5 1e3]) % Log-scaled limits

And for plots with multiple y-axes:

y1 = sin(x); 
y2 = cos(x);

plotyy(x, y1, x, y2)
ylim(axes1, [-1 1]) % First y-axis limits    
ylim(axes2, [-1 1]) % Second y-axis limits

So utilize this axis manipulation toolset to reveal key data features.

Common Use Cases for Custom Axis Ranging

Beyond distribution analysis, non-standard axis limits assist conveying patterns with:

Errors and confidence intervals:

x = 1:10;
y = rand(1,10); 

error = 0.5*ones(1,10);  

errorbar(x, y, error)  

xlim([0 11])
ylim([0 1.5])  

Adjusted error bar plot axis range MATLAB

Regional magnifications:

x = linspace(0, 100); 
y = sqrt(x);   

plot(x,y)
axis([30 55 0 8]) % Zoom on feature

Regional zoom axis limit MATLAB plot

Irregular plots:

x = linspace(0, 10*pi);
y = tan(sin(x)).*cos(x);  

plot(x, y)  
ylim([-15 15]) 

Irregular plot with axis limit adjustment MATLAB

The capacity to manually set axis ranges addresses common scenarios like uncertainty communication, feature magnification, and irregular data mapping.

Strategic Subplot Axis Constraints

For multi-panel subplots, defining axis styles upfront improves consistency:

subplot(1,2,1,‘XLim‘,[-3 3],‘YLim‘,[-1 1], ... 
         ‘XMinorTick‘,‘on‘,‘YGrid‘,‘on‘) 
plot(x1, y1) 

subplot(1,2,2,‘XLim‘,[-3 3],‘YLim‘,[-1 1], ...
         ‘YTick‘,[-1 -0.5 0 0.5 1], ...  
         ‘YMinorTick‘,‘on‘)
plot(x2, y2)   

Configured MATLAB subplot axis ranges

The ‘X Lim‘ and ‘YLim‘ name-value pairs constrain all plots, while other settings customize individual axes. Predefining styles in this way provides a clean, consistent look without repetitive manual adjustment.

For colorbars and scaled heatmaps, pass axis limits to the colormap:

heatmap_data = rand(10, 12);

imagesc(heatmap_data)  
colormap(jet) 
c = colorbar;
c.Limits = [0 1]; % Colorbar axis limits

So standardize axes programmatically through subplot and colormap parameterization.

Interactive and Dynamic Plot Inspection

Besides manual coding, interactively exploring data by dragging axes offers insights. Toggle this feature in MATLAB:

datacursormode on
dcm_obj = datacursormode(gcf);  
set(dcm_obj, ‘UpdateFcn‘, @update_limits)

function update_limits(obj)
   xlim(obj.Position(1:2))
   ylim(obj.Position(3:4)) 
end

Now clicking and dragging within plot regions will update the axes. Enable zooming through the pan/zoom toolbar icons for further investigation.

Another approach for fluid axis adjustment involves linking interactive sliders:

x = linspace(0, 10);
y = sin(x);

fig = figure;
ax = axes(‘Parent‘, fig);
plot(x, y)

slider_xmin = uicontrol(‘Style‘, ‘slider‘); 
slider_xmax = uicontrol(‘Style‘, ‘slider‘);

lims = [ax.XLim]; 

slider_xmin.Min = min(x);
slider_xmin.Max = max(x); 
slider_xmin.Value = lims(1);

slider_xmax.Min = min(x);
slider_xmax.Max = max(x);
slider_xmax.Value = lims(2); 

slider_xmin.Callback = @(src,event) updatePlotLimits;
slider_xmax.Callback = @(src,event) updatePlotLimits;

function updatePlotLimits(src,event)
    xmin = slider_xmin.Value;
    xmax = slider_xmax.Value;  
    xlim([xmin xmax]) 
end

This creates adjustable slider bars to fluidly tweak x-axis limits, callable on interactive events. Dynamic axes coupled with zooming and panning facilitates plot investigation.

Avoiding Common Axis Range Pitfalls

While extensive customization empowers, certain practices detriment interpretability:

Excess whitespace from overwide plots

Excess whitespace from poor MATLAB axis limit choice

Feature obscurement from undersized ranges

Obscured feature from inadequate MATLAB axis limit

Data loss from out-of-bounds limits

Warning: Error updating Text.  
Error using matlab.graphics.primitive.Text/set
The specified limits caused all or parts of the data to become 
unavailable. Update the XLim or YLim properties to make the data
available again. 
> In graphics\private\set_line_data at 142
  In graphics\primitive\(Line)>local_set at 104 
  In graphics\primitive\(Line\plot) at 259

So balance tradeoffs between magnification and overconstraint.

Range distortions from non-zero origins

Distorted MATLAB plot from non-zero axis origin limit

Generally center axis limits on zero unless logically depicting deviations.

Perceptual Considerations for Optimal Limits

Research on quantitative graphical perception provides guidelines for intuitive range selection in MATLAB:

  • Axis limits deviating from defaults should enhance data comparison
  • Match scales for overlayed visualizations
  • Eliminate excessive whitespace but avoid clipping
  • Linear vs logarithmic scaling depends intrinsically on data characteristics
  • Strategically break axes to clearly depict discontinuities
  • Limit label precision to 2-4 significant figures for readability

Integrating these principles with MATLAB‘s programmatic tools produces optimized data visualizations.

Conclusion

Modifying axis ranges in MATLAB provides immense flexibility to expose significant patterns otherwise hidden by default spanning. But avoid introducing unintended distortions – instead, leverage functionalities like axis, xlim, ylim and interactions judiciously based on data nuances and visualization purpose. Through practice, developers gain intuition for perceiving optimal data-driven axis configurations unique to given analytical needs. So cultivate these core axis manipulation skills alongside MATLAB‘s versatile plotting capacities to extract invaluable insights.

Similar Posts