How do I get rid of custom data tip?

109 ビュー (過去 30 日間)
Roger Breton
Roger Breton 2022 年 3 月 19 日
コメント済み: Voss 2022 年 3 月 20 日
I have this script which adds a custom data tip to my scatter3 graph :
function txt = displayCoordinates(~, info)
global clickedCIE_L clickedCIE_a clickedCIE_b;
clickedCIE_L = info.Position(3); % 69
clickedCIE_a = info.Position(1); % -56
clickedCIE_b = info.Position(2); % 46
Hrad = mod(atan2(clickedCIE_b,clickedCIE_a),2*pi); % 2.4539
hueAngle = Hrad*180/pi; % 140 degrés
chroma = sqrt(clickedCIE_a.^2 + clickedCIE_b.^2); % 72
txt = {sprintf('CIE L: %.0f', info.Position(3)), sprintf('CIE a: %.0f', info.Position(1)), sprintf('CIE b: %.0f', info.Position(2)), sprintf('CIE c : %.0f ', chroma), sprintf('CIE h : %.0f °', hueAngle) };
end
It works great, producing this output :
Problem is, this custom data tip does not have any handle I can see? So I can't make the data tip disappears programmatically when it is no longer needed? Suppose I click on the pushbutton 'Plot2D' : I wish there was away to delete the data tip....
Any help is appreciated.

回答 (1 件)

Voss
Voss 2022 年 3 月 19 日
編集済み: Voss 2022 年 3 月 19 日
If feasible, you can store the handle to the DataTip when it is created (Option 1 below).
If not, you can find it using findobj() (Option 2 below).
Then delete() it.
h = plot(1:10);
h.DataTipTemplate.DataTipRows(1).Label = 'Custom X';
h.DataTipTemplate.DataTipRows(2).Label = 'Custom Y';
% Option 1: store the handle to the DataTip when it is created:
dt = datatip(h)
dt =
DataTip (Custom X 1, Custom Y 1) with properties: DataIndex: 1 Location: 'northeast' Parent: [1×1 Line] Show all properties
% Option 2: find the DataTip after it is created, using findobj():
dt = findobj(gca(),'Type','DataTip')
dt =
DataTip (Custom X 1, Custom Y 1) with properties: DataIndex: 1 Location: 'northeast' Parent: [1×1 Line] Show all properties
% now that you have the handle, delete the DataTip:
delete(dt);
  4 件のコメント
Roger Breton
Roger Breton 2022 年 3 月 20 日
Exactly, I have no idea how the data tip is created?
Voss
Voss 2022 年 3 月 20 日
Well, maybe try putting these lines:
dt = findobj(gca(),'Type','DataTip');
delete(dt);
Or more succinctly:
delete(findobj(gca(),'Type','DataTip'));
wherever you want to delete any DataTips from the current axes, and see if that works.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeWhos についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by