Btc Sources
Btc Sources

Reputation: 2061

Ezpolar plots function string over polar axes

I'm using Ezpolar function in order to plot some graphics. Three of them have as maximum value 4, but the last one only has a bit more than 2.

When I plot them, the last one is plotted with it's function over it (seems like if ezpolar paints it some pixels after it maxium value used as radius).

Code and Generated Plot

% This subplot is used since I've 4 graphics to draw.
subplot(2,2,4)
ezpolar('0.25*(5 - 4*cosd(-180 * sin(t) ))');
title('D')

If I don't use this subplot, using a complete figure to draw the graphics seems fine. However, since I need to have all four of them together, it results in (will draw only the problematic one, subplot 2,2,4):

Image plotted

As you can see, r = 0.25 (5 - 4...) is plotted just over the polar axes.

Why is it happening? How can I fix it?

Upvotes: 0

Views: 195

Answers (1)

Suever
Suever

Reputation: 65460

The issue appears to be with the position of that annotation and the fact that when you use a subplot, the limits on the radius of the polar plot actually change but the position of the annotation does not.

To combat this, you could actually compute the limits of the axes and change the position of the text to be explicitly outside of the plot.

hax = subplot(2,2,4);
p = ezpolar('0.25*(5 - 4*cosd(-180 * sin(t) ))');

% Get the handle to the label text object
label = findobj(hax, 'type', 'text');

% Figure out the current axes limits
ylims = get(hax, 'ylim');

% Add some padding (as a percent) to the position
padding = 0.2;
set(label, 'Position', [0 ylims(1)*(1 + padding), 0]);

enter image description here

A better way to do this would be to change the Units of the label to use Normalized units (relative to the axes) rather than Data units. This way, it will not change if the axes limits change.

hax = subplot(2,2,4);
p = ezpolar('0.25*(5 - 4*cosd(-180 * sin(t) ))');

% Get the handle to the label text object
label = findobj(hax, 'type', 'text');

set(label, 'Units', 'Normalized', 'Position', [0.5, -0.2]);

Upvotes: 1

Related Questions