Data space to figure units conversion
Updated 25 Oct 2021
The annotation function, which allows you to programmatically add a wide range of annotations to your figure, requires coordinates to be specified in normalized figure units. I have found that I almost always want to specify my annotations in data space (i.e., based on the values of data displayed in an axes).
This utility function converts coordinates in data space into normalized figure coordinates, for input to annotation. Some annotations require you to specify (x,y) pairs, while others require a 4 element position vector. This function supports both syntaxes.
Here's a simple example:
% Create some data
t = 0:.1:4*pi;
s = sin(t);
% Add an annotation requiring (x,y) coordinate vectors
xa = [1.6 2]*pi; % X-Coordinates in data space
ya = [0 0]; % Y-Coordinates in data space
[xaf,yaf] = ds2nfu(xa,ya); % Convert to normalized figure units
annotation('arrow',xaf,yaf) % Add annotation
Note: I believe annotation was introduced in MATLAB 7.
Michelle Hirsch (2022). Data space to figure units conversion (https://github.com/michellehirsch/MATLAB-Dataspace-to-Figure-Units), GitHub. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Inspired: coord2norm, Simulating the Ramsey-Cass-Koopmans Model Using MATLAB and Simulink, axescoord2figurecoord, 3D data space to figure space conversion, Normalized Coordinates for Annotations, 3D data space coordinates to normalized figure coordinates conversion
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!