image thumbnail

Data space to figure units conversion

version 1.2.0.0 (3.66 KB) by Michelle Hirsch
A utility function to simplify use of annotation function

12.7K Downloads

Updated 25 Oct 2021

From GitHub

View license on GitHub

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
plot(t,s);ylim([-1.2 1.2])
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.

Cite As

Michelle Hirsch (2022). Data space to figure units conversion (https://github.com/michellehirsch/MATLAB-Dataspace-to-Figure-Units), GitHub. Retrieved .

MATLAB Release Compatibility
Created with R2006a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
To view or report issues in this GitHub add-on, visit the GitHub Repository.
To view or report issues in this GitHub add-on, visit the GitHub Repository.