Question

I'm using polar plots (POLAR(THETA,RHO)) in MATLAB.

Is there an easy way to fix the range for the radial axis to say, 1.5?

I'm looking for something analogous to the xlim, ylim commands for cartesian axes. Haven't found anything in the docs yet.

Was it helpful?

Solution

Here's how I was able to do it.

The MATLAB polar plot (if you look at the Handle Graphics options available) does not have anything like xlim or ylim. However, I realized that the first thing plotted sets the range, so I was able to plot a function with radius range [-.5 .5] on a [-1 1] plot as follows:

theta  = linspace(0,2*pi,100);
r      = sin(2*theta) .* cos(2*theta);
r_max  = 1;
h_fake = polar(theta,r_max*ones(size(theta)));
hold on;
h      = polar(theta, r);
set(h_fake, 'Visible', 'Off');

That doesn't look very good and hopefully there's a better way to do it, but it works.

OTHER TIPS

this worked for me... i wanted the radius range to go to 30, so i first plotted this

polar(0,30,'-k')
hold on

and then plotted what i was actually interested in. this first plotted point is hidden behind the grid marks. just make sure to include

hold off

after your final plotting command.

Simple solution is to make a fake graph and set its color to white.

fake=100;
polar(0,fake,'w');
hold on;

real=10;
polar(0,real,'w');

In case anyone else comes across this, here's the solution:

As Scottie T and gnovice pointed out, Matlab basically uses the polar function as an interface for standard plots, but with alot of formatting behind the scenes to make it look polar. Look at the values of the XLim and YLim properties of a polar plot and you'll notice that they are literally the x and y limits of your plot in Cartesian coordinates. So, to set a radius limit, use xlim and ylim, or axis, and be smart about the values you set:

rlim = 10;
axis([-1 1 -1 1]*rlim);

...that's all there is to it. Happy Matlabbing :)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top