File Exchange

image thumbnail

INTERACTIVEMOUSE

version 1.0.0.1 (10 KB) by jiro
Interactively pan, zoom, center view a plot using the mouse

3 Downloads

Updated 01 Sep 2016

View License

After I made this in R13 and testing it in R14, I noticed that the PAN function had a similar functionality. However, This function has additional features (zoom and center view)
#######################################
INTERACTIVEMOUSE toggles the interactive mode of the current figure.
INTERACTIVEMOUSE ON turns on the interactive mode.
INTERACTIVEMOUSE OFF turns off the interactive mode.
INTERACTIVEMOUSE RESET sets the 'restore point' to the current view.
INTERACTIVEMOUSE RESTORE restores the view to the 'restore point'. The 'restore point' is predefined as the original view, unless the current view is set as the 'restore point' with RESET.
INTERACTIVEMOUSE RESTORE_ORIG restores the view to the original view (the view before INTERACTIVEMOUSE was initially called on this figure). This 'restore point' is fixed regardless of whether RESET was called or not.

INTERACTIVEMOUSE(FIG) and INTERACTIVEMOUSE(FIG, OPTION) applies to the figure specified by handle FIG. FIG can be a vector of figure handles. OPTION can be any of the above arguments. The figure(s) can have multiple axes.

The following features are included in the interactive mode:
Pan : click and drag.
Zoom : right click (or CNTRL-click) and drag.
Center View : double click.
Reset View : <r> with the cursor over the axes region. This resets 'restore point'. (see above note about RESET option)
Restore View : <space> with the cursor over the axes region. This restores to the 'restore point'. (see above note about RESTORE option)
Help window : <h>
Exit mode : <escape>

Note about Zoom Feature:
(2D views) : the zoom ratio depends on the location of the pointer with respect to the initial click location. Pressing the <shift> key ONCE toggles the constrained mode. In CONSTRAINED mode, the zoom ratio is constrained along x-axis, y-axis, or xy-axes depending on the pointer location. The figure window title indicates that constraint mode is active. If the axes DataAspectRatioMode is MANUAL, the zoom will always be constrained to preserve the specified aspect ratio (PROPORTIONAL mode). This is for working with images.

(3D views) : the zoom is always xyz-constrained (PROPORTIONAL). The aspect ratios are always preserved.

In the interactive mode, several figure and axes properties are set, but the current properties are restored when the interactive mode is exited. During interactive mode, the figure name changes to 'InteractiveMouse', and the figure is undocked (certain features don't work in docked mode). This works with 2D plots, images, and 3D plots (for the most part).

Examples:
% Interactively examine high frequency noise
x=0:.001:10;
y=sin(x)+.01*rand(size(x));
plot(x,y)
interactivemouse;

% Multiple axes
load clown;
subplot(211);image(X);colormap(map);axis image;
subplot(212);plot(rand(100,1), '.-');
interactivemouse;

% Use LINKAXES to link multiple axes. (>R13)
ax(1)=subplot(211);plot(rand(100,1), 'r.-');
ax(2)=subplot(212);plot(rand(100,1), '.-');
linkaxes(ax);
interactivemouse;

See also zoom, pan, linkaxes

Cite As

jiro (2019). INTERACTIVEMOUSE (https://www.mathworks.com/matlabcentral/fileexchange/10588-interactivemouse), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (14)

Marko Usaj

Excellent tool!
Can anyone help me how to add functionality which would get/store the coordinates by mouse clicking. That would be awesome! Thanks for anyone help and time!

Awesome! Thank you very much!

Would be even better if it was able to work together with your 'vertical_cursors' submission:
left click -> vertical cursors
right drag -> zooming
shift click-> panning

Thanks! Makes data exploration real easy.

Carla F.

Very nice work! Many thanks!!

Robert

you are a hero. life is different now.

Tue

problem with time series plotting: x-axis values are converted into numerical values.

Efrain Zenteno

Works excellent

Dan Kanak

great help - thanks!!

Jakob Kleinbach

Such a great tool. Thank you!

julien charton

now, even labVIEW freaks are impressed when I zoom in Matlab.

Sachin Lohani

Works like magic...great job!

Jennifer Horsman

I'm using 6.5 Rel 13. This tool works wonderfully. I am using it in a 3D plot (several planar surfaces crossing each other) and I am so glad it does not change the XYZ proportions when zooming in and out.

Diego Barragán

Master

Don Riley

Worked nicely for me. Appears to have better performance than built in pan. Worked on a figure with two images and a figure with a imscrollpanel (from IPT), and in R2006a.

Updates

1.0.0.1

Updated license

1.0.0.0

The zoom factor displayed on the graph is in relation to the original figure size, as opposed to the current figure size. Modify help text.

Change the speed of animation during centering and view restoring. Add title bar indication for view centering and view restoring. Preserve aspect ratio when the DataAspectRatioMode is MANUAL. Display zoom factor on the graph.

Optimize code. Clean up documentation. Fix ticklabel jitter bug.

Fixed more aspect ratio bugs. Now deals with all axes settings. It maintains the visual plot box size.

Allow unconstrained zoom. <shift> key toggles constrained mode. Fix aspect ratio bug.

Constrained zooming based on the movement of the mouse. Red indicator line shows the type of zoom. Added "Inspired By" files.

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

Inspired by: view3d.m, Zoom Keys, drag.m, GRABIT