Plot polars in app designer

7 次查看(过去 30 天)
Hi everyone,
I am creating an app in which I want to plot polars.But I have difficulties plotting anything.
My app consists of one main figure in which I have created a panel to hold my polar axes since there is no such axes object available in the app designer component library.
Here is what I have done so far:
  • I start by creating my polar axes in a startup function and assign these axes to the panel I have created
function startupFcn(app)
app.pax = polaraxes(app.PolarsPanel)
.
.
.
.
end
  • Later on, after a calculaton button push, I call a plot function in which I pass, among other things, the app.pax axes
  • Inside this plot function, I calculate the polars and plot them as follows
polarplot(app.pax,angleValues,horizontalPolar);
hold on
polarplot(app.pax,angleValues,verticalPolar);
legend(legendLabels)
Doing that, it seems to plot something in my panel (not what I want but it seems to do something) but it also opens a new figure on top of my main (and only) app figure.
I do not want that.
Do you guys have any idea of what I am doing wrong here?
After that, I will try to do the same thing in another panel with the patternCustom function to plot 3D-balloons but again, nothing provided in the app designer compenents library...
Thanks a lot in advance
Antoine

采纳的回答

Cris LaPierre
Cris LaPierre 2021-5-6
编辑:Cris LaPierre 2021-5-6
Support for PolarAxes in app designer was added in R2018b. What version of MATLAB are you using?
Perhaps the example 'Create Polar Axes Programmatically in an App' is what you are looking for?
You might also find the 'Plot on Polar Axes' example code given under this Create Axes Programmatically section helpful.
  2 个评论
Antoine Purier
Antoine Purier 2021-5-6
Hi Cris,
Thanks for your answer. I had actually already seen that example but it didn't work for me at first.
I tried to change my strategy and focus my function on returning the polars rather than computing them and plotting them.
After I successfully return my polars, I plot everything like below:
%% Plot polars
angleValues = deg2rad([0:app.angularResolution:360]);
horizontalPolarLine = polarplot(app.pax1, angleValues, horizontalPolar);
horizontalPolarLine.Color = 'r';
verticalPolarLine = polarplot(app.pax1, angleValues, verticalPolar);
verticalPolarLine.Color = 'b';
app.pax1.ThetaTick = [0 : 30 : 360];
app.pax1.RLim = [-60 10];
app.pax1.RTick = [-60 : 10 : 10];
set(app.pax1, 'ThetaZeroLocation', 'top');
legend(app.pax1, {'Horizontal','Vertical'})
It works fine this way, in the sense where it doesn't open a new figure anymore.
BUT, it seems to only plot one of the two polars.
I tried adding "hold on" after the first one but doing that creates a new figure automatically for some reason.
Antoine Purier
Antoine Purier 2021-5-6
Ok sorry for being silly, I just changed
hold on
to
hold(app.pax1,"on")
And it works fine!
Thanks a lot for your help.

请先登录,再进行评论。

更多回答(0 个)

类别

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

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by