Get plot lines title in a GUI plot by mouse click on each line
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi! I am trying to incorporate a function or button in a GUI via GUIDE, so as to show me the tilte of each plotted line in a plot.
Namely, I am plotting various spectra (i.e. x,y data) and I would like to click on each line and get the title of the spectrum (see attached a picture)!
Could anyone provide me with a hint on how to do this?
Thank you in advance!

0 Kommentare
Akzeptierte Antwort
Jan
am 6 Jan. 2022
Bearbeitet: Jan
am 6 Jan. 2022
You can define a ButtonDownFcn for the lines:
LineH(1) = plot(1:10, rand(1, 10), 'r', 'DisplayName', 'Line 1');
LineH(2) = plot(1:10, rand(1, 10), 'b', 'DisplayName', 'Line 2');
TitleH = text(0.01, 0.01, '', 'Units', 'normalized', ...
'VerticalAlignment', 'top');
LineH.ButtonDownFcn = {@showTitle, LineH, TitleH}; % [EDITED] Typo: "," -> "="
function showTitle(aLineH, EventData, LineH, TitleH)
TitleH.String = aLineH.DisplayName;
LineH.LineWidth = 0.5;
aLineH.LineWidth = 1.5;
uistack(aLineH, 'top');
end
3 Kommentare
Jan
am 6 Jan. 2022
Bearbeitet: Jan
am 6 Jan. 2022
My code does not contain a loop.
How are the names defined, you want to show as titles? If they are a cell string:
X = 1:10;
Y = rand(2, 10);
Name = {'Line 1', 'Line 2'};
LineH = plot(X, Y);
% Set LineH(1).DisplayName to Name{1},
% LineH(2).DisplayName to Name{2} and so on:
set(LineH, {'DisplayName'}, Name(:));
TitleH = text(0.01, 0.01, '', 'Units', 'normalized', ...
'VerticalAlignment', 'top');
LineH.ButtonDownFcn = {@showTitle, LineH, TitleH};
function showTitle(aLineH, EventData, LineH, TitleH)
TitleH.String = aLineH.DisplayName;
LineH.LineWidth = 0.5;
aLineH.LineWidth = 1.5;
uistack(aLineH, 'top');
end
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Axis Labels finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!