How to add data to cursor tip, BUT each piece of data is from a separate computation or table lookup. (Not the idx, not the coordinates.)
3 views (last 30 days)
Show older comments
This works except ... not sure how to get the data I want to show in the 'Payoff' label at the data point.
If you can solve this, genius. I really appreciate your help. DC
% Curse02.m
% Add data to where the cursor point is on a figure.
clearvars; close all; clc;
% Example data
x = 1:10;
y = randi([1, 20], 1, 10);
% Here I just created 10 random numbers to use as an example of the data I
% want to show at the cursor tip on hover-over. These values could be stored in a table or generated in real time by a function I use to generate them. I tried to put these into the 'extraInfo' but that is where I fail.
for i = 1:length(x)
Payoff(i) = rand;
end
% Create a figure and plot the data
figure(1);
plot(x, y, 'marker','o','MarkerSize',20,'MarkerEdgeColor','g','linestyle','none');
xlabel('X-axis');
ylabel('Y-axis');
title('Data Cursor with Additional Information');
hold on
% add index labels to the plot
for i = 1:length(x)
text(x(i), y(i), num2str(i), 'HorizontalAlignment', 'center')
end
% Define the data cursor
dcm_obj = datacursormode(gcf);
set(dcm_obj, 'UpdateFcn', @myDataCursorCallback); % Set the callback function
% Callback function to display additional information
function txt = myDataCursorCallback(~, event_obj)
pos = get(event_obj, 'Position');
idx = get(event_obj, 'DataIndex');
% Additional information to display
% This labels correctly but puts the index value and not the payoff.
extraInfo = ['A= ', num2str(pos(1)), ', B= ', num2str(pos(2)),...
'Payoff: ', num2str(idx)];
% Instead of index, display the payoff.
% Construct the text to display
txt = {['D:',' ', extraInfo]};
end
0 Comments
Accepted Answer
Voss
on 16 Dec 2023
Edited: Voss
on 16 Dec 2023
One way to do that is to use the array Payoff as an input to myDataCursorCallback. Something like this:
% Curse02.m
% Add data to where the cursor point is on a figure.
clearvars; close all; clc;
% Example data
x = 1:10;
y = randi([1, 20], 1, 10);
% Here I just created 10 random numbers to use as an example of the data I
% want to show at the cursor tip on hover-over. These values could be stored in a table or generated in real time by a function I use to generate them. I tried to put these into the 'extraInfo' but that is where I fail.
Payoff = rand(1,numel(x));
% Create a figure and plot the data
figure;
plot(x, y, 'marker','o','MarkerSize',20,'MarkerEdgeColor','g','linestyle','none');
xlabel('X-axis');
ylabel('Y-axis');
title('Data Cursor with Additional Information');
hold on
% add index labels to the plot
text(x, y, compose('%d',1:numel(x)),'HorizontalAlignment', 'center')
% Define the data cursor
dcm_obj = datacursormode(gcf);
set(dcm_obj, 'UpdateFcn', {@myDataCursorCallback,Payoff}); % Set the callback function, and include additional argument Payoff
% Callback function to display additional information
function txt = myDataCursorCallback(~, event_obj, extraData)
pos = get(event_obj, 'Position');
idx = get(event_obj, 'DataIndex');
% Additional information to display
% This puts the the payoff, which has been sent as input extraData
extraInfo = ['A= ', num2str(pos(1)), ', B= ', num2str(pos(2)),...
', Payoff: ', num2str(extraData(idx))];
% Construct the text to display
txt = {['D:',' ', extraInfo]};
end
More Answers (0)
See Also
Categories
Find more on Automated Fixed-Point Conversion in MATLAB in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!