Graph plot multiple datasets: how to show dataset name when hovering over dataset

29 次查看(过去 30 天)
Hello community,
Attached picture shows a plot generated by one of my scripts. The script plots multiple datasets. The legend is plotted on the chart.
I would like to see the legend name of the dataset when I hover over a dataset point. At this moment, as you can see in the screen dump, I get the (X,Y)-values. How can I get the legend name when hovering over data point? I would use this to identify and further investigate the outliers in the dataset.
Kind regards,
Ferry Nieuwland

采纳的回答

Aman
Aman 2023-6-12
编辑:Aman 2023-6-12
Hi Ferry,
You can use the built-in Data Cursor tool in MATLAB to display custom information when hovering over data points on a plot.
Here's an example for the same,
% First, create a sample plot with multiple data series
figure;
x = linspace(0, 2*pi, 100);
y1 = sin(x);
plot(x, y1, 'r', 'DisplayName', 'sin(x)');
hold on
y2 = cos(x);
plot(x, y2, 'b', 'DisplayName', 'cos(x)');
hold off
legend('show')
% Next, create a data cursor object and update its properties
dcm = datacursormode(gcf);
set(dcm, 'UpdateFcn', @myupdatefcn)
% Define a custom update function that displays the legend name
function output_txt = myupdatefcn(~, event)
% Extract the data index and the x and y values
idx = event.DataIndex;
x = event.Position(1);
y = event.Position(2);
% Extract the legend name for the corresponding series
leg = event.Target.DisplayName;
% Create a cell array with custom display text
output_txt = {['Series:', leg], ['X:', num2str(x)], ['Y:', num2str(y)]};
end
Here, I have used sin and cosine plot for demonstration. This code first creates a sample plot with two data series and a legend. It then creates a Data Cursor object on the figure and defines a custom UpdateFcn function that will be executed whenever you hover over a data point on the plot.
The UpdateFcn function takes two arguments: the Data Cursor object and an event object containing information about the current data point. The function uses event.DataIndex to extract the index of the current data point, and event.Position(1) and event.Position(2) to extract the x and y values. It then uses event.Target.DisplayName to extract the legend name of the corresponding data series.
Finally, the function creates a cell array output_txt containing the custom display text, which is displayed when you hover over a data point on the plot.
Hope this helps!

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Legend 的更多信息

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by