MATLAB Answers

Disable automatic Data Tips

43 views (last 30 days)
Chad Greene
Chad Greene on 2 Jan 2020
Commented: Benjamin Kraus on 19 Nov 2020 at 15:00
I've just updated from R2018b to R2019b, and now every time I click on a plot, it prints a new Data Tip without my asking it to. So just clicking on a plot to make the axes current or pan or zoom ends up creating a mess like this:
Screen Shot 2020-01-02 at 12.25.41 PM.png
Is there any way to disable this behavior?

  0 Comments

Sign in to comment.

Accepted Answer

Mustafa Abu-Mallouh
Mustafa Abu-Mallouh on 2 Jan 2020
Edited: Mustafa Abu-Mallouh on 2 Jan 2020
There are a few ways to go about this. To do this for individual plots, you can use the disableDefaultInteractivity command as below:
x = 0:0.01:10;
y = sin(x);
figure(1)
plot(x,y)
disableDefaultInteractivity(gca)
If you would like to do it for all of the created plots in a session, use
>> set( groot , 'defaultAxesCreateFcn' , 'disableDefaultInteractivity(gca)' )
However, with that method it will reset everytime you start up MATLAB.
If you would like this to apply whenever you open MATLAB, you'll need to implement it into your startup.m file. Here is an example of how you could implement it (MATLAB version 9.7 is 2019b)
if ~verLessThan('MATLAB','9.7')
set( groot , 'defaultAxesCreateFcn' , 'disableDefaultInteractivity(gca)' )
end

  5 Comments

Show 2 older comments
Chad Greene
Chad Greene on 2 Jan 2020
Ah, brilliant! That works perfectly! Thanks Mustafa! I've added your suggested if statement to my startup.m.
Thanks again!
Bjorn Gustavsson
Bjorn Gustavsson on 28 Aug 2020
Thank you very much. Definitely a solution providing great relief.
Benjamin Kraus
Benjamin Kraus on 19 Nov 2020 at 15:00
There is a bug with this solution that will cause some strange and unexpected behaviors.
The issue is the call to gca, which will only work if the axes has HandleVisibility set to 'on' and if the parent figure of the axes also has HandleVisibility set to 'on'. Otherwise, gca will create a new axes instead of operating on the axes you think it should. This is particularly troublesome for App Designer, because the figure has HandleVisibility set to 'off' by default.
The better way to achieve the same goal is to use a function handle and set the DefaultAxesCreateFcn like this:
if ~verLessThan('MATLAB','9.7')
set(groot, 'defaultAxesCreateFcn', @(ax,~) disableDefaultInteractivity(ax))
end
The difference here is that the axes handle itself is passed directly to disableDefaultInteractivity so it is no longer dependent upon gca working.

Sign in to comment.

More Answers (0)

Tags

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by