Transform axes coordinates in current
figure units coordinate. Useful for annotation location.

Acknowledgments are due to Scott Hirsch (shirsch@mathworks.com) for is
function ds2nfu. Some part of the present function derived from ds2nfu.

The advantage of the present function comparing to ds2nfu is that it managed problems occurring with various 'DataAspectRatioMode' and 'PlotBoxAspectRatioMode' as well as reverse 'XDir' or 'YDir'.

This is a much needed function and works well. Thank you.

It would be great if the reference in the matlab manual to dsxy2figxy could be changed to mention this function. I wasted a lot of time trying to work out what was going on with dsxy2figxy. Even would be helpful if this function was included in matlab. How does this kind of decision get made?

Also, would be good if the function could work irrespective of the figure units, not just for normalised units.

If an annotation object is moved manually, and the new location needs to be extracted, then the opposite conversion is necessary. Would someone like to write it (in the same rigorous way as here, taking PlotBoxAspectRatio and DataAspectRatio into account) ? :-)

16 Aug 2008

Dietmar Reschner

I'd like to thank the author for posting this file.

The function axescoord2figurecoord can be used instead of matlab's 'dsxy2figxy' when transforming from axis to figure coordinates and your 'PlotBoxAspectRatio' differs from [1 1 1].
Note for users! Only works with figure units set to normalized, like: set(gcf,'Units','normalized').