Version 4.6 (9.52 KB) by Allen
Creates draggable data tips with custom labeling options on most 2-D plots. Custom labels options can also be applied to standard data tips.


Updated Fri, 12 Aug 2022 19:14:29 +0000

View License

Editor's Note: This file was selected as MATLAB Central Pick of the Week

This function provides a solution to the limited positions allowed by standard MATLAB Data Tips on
most 2-D plots by replacing them with a draggable version when the "Data Tip" mode is toggled off.
Since standard data tips can only be moved to a position where one of its four corners touches the
selected data point, this can unavoidably lead to obstructed portions of graphed data. Draggable
data tips can be moved anywhere within the current axes, thus allowing better visibility of the
plot. New visual features are used to reference the draggable data tip to its corresponding data
point and parent object. These include a connecting line between the data tip textbox and the data
point as well as a border on the data tip that will try to utilize the same color and line weight
properties as the target parent object.
The varargin input argument allows the user to optionally customize the data tips labels. For
example, X- and Y-value labels can be replace with something more descriptive such as 'Time' and
'Accel'. In addition to axis labels and when a plot legend is used, a header label can be added to
the data tip. Headers are added above the axis labels and match the target object's display name
as it appears in the legend. While the data tip header feature requires a legend to exist prior to
creation of the data tip, the legend can be deleted after creating the data tip and will not
effect the header label. If a legend does not exist when the data tip is created, the header
option is ignored.
Additional variable input options include setting the numerical precision and/or font size for the
displayed data values, and adjusting the appearance of the leader lines by specifying the line
While the labels/header options are applied to all axes within a single figure, it is
still possible to use different labels and headers throughout multiple axes or even on a single
axes for a figure. This is done by applying DRAGDATATIP to a figure and adding a number of new
draggeble data tips, then reapplying DRAGDATATIP with a new set of options and creating additional
data tips.
NOTE: Draggable data tips can currently be removed by using one of the methods listed below:
1. Right-click on any single data tip and select delete single or all from the context menu.
2. Use the figure's "Edit Plot" tool, select the data tip, and press 'delete'.
3. Find and delete axes line objects with the "Tag" property set to 'DraggableDataTip'.
DRAGDATATIP relies heavily on undocumented features and functions in MATLAB.

Cite As

Allen (2023). DragDataTip (https://www.mathworks.com/matlabcentral/fileexchange/69799-dragdatatip), MATLAB Central File Exchange. Retrieved .

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

Inspired by: draggable, Draggable data tips

Inspired: LineVisible

Community Treasure Hunt

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

Start Hunting!
Version Published Release Notes

Minor refinements to improve stability and performance.


Bug Fixes


-Minor bug fixes and removed unused/redundant code.
-Suppressed warning messages.
-Data tips are deleted when their associated parent objects are deleted.
-Link "Visible" properties between data tip and parent object.


Fixed bug related to CreateFcn use and improved overall speed (less lag when dragging data tips). Also added behavior improvements related to figure resizing, axes limit changes, object stack order, and figure visibility for opening saved figures.


Added additional optional customization features, removed dependency of the figure's KeyPressFcn, and updated the CreateFcn callback to maintain DragDataTip functionality when saving and then reopening a figure.


- Incorporate draggable() directly into code to address multiple issues
- Works with datetime data classes
- Fixed bug on log-scales
- Added more data tip deletion opts
- Fixed bugs associated with various 2-D plot types (scatter,area,bar,etc.)


- Fixed bug to apply function to multiple figures simultaneously.
- Fixed bug to work with 'duration' data types
- Added non-draggable display fixes for 'date/times'. Requires update to draggable.m to make 'date/times' draggable.


-Added 'on/off' option to the draggable feature. Allows header and labels to be applied to standard data tips.


- Now works with a single line of code.
- Assigns function to the current figure when the 'hFig' input is not used.
- Improved data tip deletion methods.
- Fixed bug that allowed data tips to be applied to existing data tip leader lines.


- Changed function behavior to utilize a property listener on the DataCursorManager "Enable" property. This allows toggling of the DataCursorMode between 'on' and 'off' to create the draggable data tips vs the previous need to use the "KeyPressFcn".


- Updated parsing of varargin.
- Fixed bug when applying custom data tip labels to default MATLAB Data Tips.


- Apply custom data tip labels to default MATLAB Data Tips before creating draggable versions.
- Fixed bug that prevented default (gca) assignment of hAx input when not provided.


Added Acknowledgements