Extract data points from a plot corresponding to the plot legend
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Michael Angeles
el 7 de Feb. de 2023
Respondida: Les Beckham
el 7 de Feb. de 2023
I am trying to determine how to extract the data file from the plot.
Data has to correspond with the correct plot. Please help.
open('ExampleData.fig')
0 comentarios
Respuesta aceptada
Les Beckham
el 7 de Feb. de 2023
fig = openfig('ExampleData.fig'); % open and get a handle to the figure
% get(fig);
ax = get(fig, 'CurrentAxes'); % get handle to the axis in the figure
% get(ax);
lines = get(ax, 'Children'); % get handles to the lines which are children of the axis
% get(lines(1));
for i = 1:numel(lines) % extract the data from each of the lines
xdata{i} = lines(i).XData;
ydata{i} = lines(i).YData;
names{i} = lines(i).DisplayName;
end
names' % display the names to verify that they are in the right order (per the legend)
% looks like they aren't, create a new index vector to re-arrange them
idx = [6 5 4 3 2 1];
xdata = xdata(idx); % note regular parentheses here
ydata = ydata(idx);
names = names(idx);
names' % display the re-arranged names to verify that they are NOW in the right order (per the legend)
% whos
0 comentarios
Más respuestas (1)
Voss
el 7 de Feb. de 2023
Here's one way:
f = openfig('ExampleData.fig');
lines = findall(f,'Type','line')
line_props = cell(1,numel(lines));
for ii = 1:numel(lines)
line_props{ii} = get(lines(ii));
end
line_props = [line_props{:}];
line_props
Now you can use line_props to get whatever information about the lines you need.
For example, to get the XData and YData of the '90°Post Thermal Dec' line:
idx = find(strcmp({line_props.DisplayName},'90°Post Thermal Dec'));
data = [line_props(idx).XData(:) line_props(idx).YData(:)]
0 comentarios
Ver también
Categorías
Más información sobre Legend en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!