Allows graphical objects to be dragged in a figure.
Updated 27 Mar 2023

View License

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

This function enables a graphical object (be it a line, plot, patch, rectangle, text box, etc.) to be dragged inside an axis, with a very simple syntax ("draggable(h)"), following or not horizontal, vertical or diagonal constraints. Limits can be imposed on the object's movement.
Some figure properties are changed by the function, but previous properties are restored as soon as the drag is stopped. The behavior of the object can be reverted to its original, non-draggable state, by issuing "draggable(h,'off')".
Typical uses of this function would include non-standard GUI elements, such as markers that are moved on a figure or image. A function which is called when the object is moved can be provided as an optional argument, so that the movement triggers further actions.
See the provided file dragdemo.m for usage examples.

Cite As

Francois Bouffard (2024). draggable (https://www.mathworks.com/matlabcentral/fileexchange/4179-draggable), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2020a
Compatible with any release
Platform Compatibility
Windows macOS Linux
Find more on Graphics Object Programming in Help Center and MATLAB Answers

Community Treasure Hunt

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

Start Hunting!
Version Published Release Notes

Includes Gunnar Geissler's 'data' constraint, allowing a marker or other object to snap to data series.

Probable fix to draggable not working well with App Designer apps. Thanks to William E. Warriner for working on the fix with me and testing it.

This update fixes a bug found by Esmerald Aliai in which draggable would not work for axes embedded in Panels. In fact this should also fix Shaun's bug mentioned in March 2012.

Major update. Now supports text objects. Diagonal constraints with arbitrary slopes added. Single call for applying draggable on multiple objects sharing the same parameters supported. Added the 'sliders' demo in dragdemo. General cleanup.

implemented a feature and fixed a bug (both user-suggested)

Bugfix for Matlab 7+: axes no longer disappear. Renderer option removed.