Get plot lines title in a GUI plot by mouse click on each line
8 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Jan
2022 年 1 月 6 日
編集済み: Jan
2022 年 1 月 6 日
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 件のコメント
Jan
2022 年 1 月 6 日
編集済み: Jan
2022 年 1 月 6 日
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
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Title についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!