Can't Get ThetaZeroLocation to Work Properly Using polarplot

32 views (last 30 days)
Hi all,
I have binaural audio measurements made with a head and torso simulator on a turntable. Impulse response were measured for 81 angles at 3° increments (so, 240° to 120° via 0°) to cover the maximum rotation of a human head (and beyond). So, the angle values are a vector ...
Angles = [240:3:357, 0:3:120]; % Vector of angle/azimuth positions
But when I try to plot with the zero location at 'top' (i.e., "north", "12 o'clock", etc.), it stays at the default of 'right. No other directions work either. My feeling is that the ordering of my angles vector is interfering, but I have no idea why - it plots how I'd like, just on its side.
The example here works fine:
... but not with my angle vector as the theta value, which is what leads me to think that's the issue. The full plotting code I'm using (with random numbers for simulated data) is ...
Angles = [240:3:357, 0:3:120]; % Vector of angle/azimuth positions
theta = deg2rad(Angles);
rho = rand(1,81);
ax = polaraxes;
ax.ThetaZeroLocation = 'top';
polarplot(theta,rho);
Many thanks in advance for any advice or suggestions people have. Cheers!

Accepted Answer

Adam Danz
Adam Danz on 4 Dec 2021
Edited: Adam Danz on 4 Dec 2021
You have to either hold the axes after setting ThetaZeroLocation or set ThetaZeroLocation after plotting. Otherwise, when you plot using polarplot it resets the properties.
Angles = [240:3:357, 0:3:120];
Angles = [240:3:357, 0:3:120]; % Vector of angle/azimuth positions
theta = deg2rad(Angles);
rho = rand(1,81);
ax = polaraxes;
ax.ThetaZeroLocation = 'top';
hold(ax, 'on') % <----------- hold
polarplot(theta,rho);
  4 Comments
Steven Lord
Steven Lord on 5 Dec 2021
This behavior is not limited to polarplot. High-level plotting functions basically call newplot before they create their lines, surfaces, etc. newplot checks certain figure and axes properties to determine how to prepare the figure and axes for those new lines, surfaces, etc. hold changes those figure and axes properties. See the documentation page for more details.
Peter Beringer
Peter Beringer on 5 Dec 2021
Edited: Peter Beringer on 5 Dec 2021
Thanks both of you for giving me clarification on that. The weird thing is that after getting an answer, I then looked at some other plotting code of mine, I've always specified properties after the plotting function call. Why on earth I thought this needed to be specfied prior I'll never know (stupidity would be a good guess). Oh, well, live and learn ... haha.
Thanks again!

Sign in to comment.

More Answers (0)

Categories

Find more on Polar Plots in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!