Plotting multiple data sets on the same polaraxes in AppDesigner
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Pawel Tokarczuk
am 16 Jul. 2022
Kommentiert: Rik
am 29 Jun. 2023
Should I be able to plot 2 or more data sets - e.g., measured and interpolated points - in the same polaraxes ?
I can do this in a plain figure, or GUIDE, using "hold on" and returning a handle from each plot, but I'm not succeeding in AppDesigner(2021b), which I'd like to use because of its clean appearance, ease of use and WYSIWIG screen captures using exportapp.
I'm working from the on-line example:
openExample('matlab/AppdPolarExample')
The code below fails where "plotmark" is defined:
% Define theta. Get a and b
theta = double(0:360)*(pi/180.0);
steps = double(0:10:360)*(pi/180.0); % My new code
a = app.aEditField.Value;
b = app.bEditField.Value;
% Calculate r and plot it
r = (1 + sin(a.*theta)).^(1/b);
s = (1 + sin(a.*steps)).^(1/b); % Also here
plotline = polarplot(app.Pax, theta, r);
plotmark = polarplot(app.Pax, steps, s, 'o', ...
'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k'); % THE ERROR IS HERE
% Set line color
plotline.Color = app.DropDown.Value;
plotline.LineWidth = 1.5;
The error message is "invalid or deleted object".
Are multiple plots impossible here, or is there a work-around ?
0 Kommentare
Akzeptierte Antwort
Kevin Holly
am 18 Jul. 2022
Bearbeitet: Kevin Holly
am 18 Jul. 2022
You can still use hold on in App Designer, but you have to specify the axes.
properties (Access = private)
Pax % Polar axes
end
methods (Access = private)
function updateplot(app)
% Define theta. Get a and b
theta = 0:pi/1800:2*pi;
steps = double(0:10:360)*(pi/180.0); % My new code
a = app.aEditField.Value;
b = app.bEditField.Value;
% Calculate r and plot it
r = (1 + sin(a.*theta)).^(1/b);
s = (1 + sin(a.*steps)).^(1/b); % Also here
plotline = polarplot(app.Pax, theta, r);
hold(app.Pax,"on")
plotmark = polarplot(app.Pax, steps, s, 'o', ...
'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'k');
% Set line color
plotline.Color = app.DropDown.Value;
plotline.LineWidth = 1.5;
end
end
2 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Creating, Deleting, and Querying Graphics Objects finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!