How to automatically calculate and display the difference between 2 datatip points in MATLAB R2023a?
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
MathWorks Support Team
il 25 Set 2023
Risposto: MathWorks Support Team
il 2 Ott 2023
How can I automatically calculate the difference between two selected datatips and display them as "dx" and "dy" on the chart? What steps should I follow to achieve this?
Risposta accettata
MathWorks Support Team
il 25 Set 2023
There are at least two ways to achieve the intended workflow:
1 . Using the "ginput" function:
One suggested approach is to manually select the points using the "ginput" function and perform the calculation with the datatip "UpdateFcn" callback function.
The "ginput" function allows you to select the coordinates of multiple points within Cartesian, polar, or geographic axes. To choose a point, you move the cursor to the desired location and press a mouse button or a key on the keyboard. Pressing the Return key stops the selection before all points are chosen. The selected points' coordinates are returned by MATLAB.
The documentation for "ginput" can be found at:
Here is the workaround code:
% Create a new figure window
f = figure;
% Define x and y values for plotting
x = 1:10;
y = x.^2;
% Plot y = x^2
plot(x, y);
% Prompt the user to select the first point of interest using the mouse
firstPoint = ginput();
% Prompt the user to select the second point of interest using the mouse
secondPoint = ginput();
% Calculate the difference in x-coordinates between the two selected points
xDiff = secondPoint(1) - firstPoint(1);
% Calculate the difference in y-coordinates between the two selected points
yDiff = secondPoint(2) - firstPoint(2);
2. Using "datatips" function:
If you want to incorporate only datatips in your workflow, you can use the following code.
This workaround using "uifigure" creates a uifigure where you can select datatips.
uif = uifigure;
ax = axes(uif);
x = 1:10;
y = x.^2;
plot(ax,x,y);
xlim([1, 10]); % Adjust xlim and ylim
ylim([2, 500]);
First, execute the above section, and after selecting the 2 datatips execute the following code to compute the difference between the datatips:
datatips = findobj(uif,'Type','datatip'); % Get the selected datatips from the plot
dy = datatips(2).Y - datatips(1).Y; %Calculation of dy
dx = datatips(2).X - datatips(1).X; %Calculation of dx
Then to show the difference of both the datatips on the plot execute the following code snippet:
% Show specific datatip (dx,dy) on the graph
hold(ax,'on')
plot(ax, datatips(1).X, datatips(1).Y, 'ro', 'MarkerSize', 10);
plot(ax, datatips(2).X, datatips(2).Y, 'ro', 'MarkerSize', 10);
plot(ax, dx, dy, 'ro', 'MarkerSize', 10);
plot(ax,x,y);
text(ax, datatips(1).X, datatips(1).Y, sprintf('dx = %d\ndy = %d', dx, dy))
hold(ax,'off')
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Data Exploration in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!