display specific name on a graph with the cursor
4 次查看(过去 30 天)
显示 更早的评论
Hello, I want to be able to display the name of the dot in a graph according to the vector position.
my code is
function
fig = figure;
a = [1 2 3 4 5]
b = [2 3 4 5 6]
name{1} ='one';
name{2} ='two';
name{3}='tree';
name{4}='four';
name{5}='five';
scatter(a, b, 'filled')
dcm_obj = datacursormode(fig);
set(dcm_obj,'UpdateFcn',@myupdatefcn)
end
function txt = myupdatefcn(empt,event_obj)
pos = get(event_obj,'Position');
nameNumber = 'WantCorrectNameHere';
txt = {['X: ',num2str(pos(1))],...
['Y: ',num2str(pos(2))],...
nameNumber};
end
So I want to have access to the right name at the selected position for exemple for a(1);b(1) -> name{1}
0 个评论
采纳的回答
Jan
2015-7-31
编辑:Jan
2015-7-31
Perhaps the SnapToDataVertex mode is useful?
function
fig = figure;
a = [1 2 3 4 5];
b = [2 3 4 5 6];
name = {'one', 'two', 'three', 'four', 'five'};
DCM_Data.Position = [a; b];
DCM_Data.Title = name;
scatter(a, b, 'filled')
dcm_obj = datacursormode(fig);
set(dcm_obj,'UpdateFcn', {@myupdatefcn, DCM_Data});
end
function txt = myupdatefcn(empt,event_obj, DCM_Data)
pos = get(event_obj,'Position');
[dummy, index] = min(((pos(1) - DCM_Data.Position(1, :)).^2) + ...
((pos(2) - DCM_Data.Position(2, :)).^2));
nameNumber = DCM_Data.Title{index};
txt = {['X: ',num2str(pos(1))],...
['Y: ',num2str(pos(2))],...
nameNumber};
end
2 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Object Programming 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!