Ezpolar绘制极轴上的函数串

时间:2016-03-28 16:52:18

标签: matlab matlab-figure

我正在使用Ezpolar函数来绘制一些图形。其中三个最大值为4,但最后一个只有两个以上。

当我绘制它们时,最后一个绘制了它的功能(看起来如果ezpolar在最大值用作半径后将其绘制成一些像素)。

代码和生成的图

% 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')

如果我不使用此子图,使用完整的figure绘制图形似乎很好。但是,由于我需要将它们中的所有四个放在一起,因此会产生(仅绘制有问题的一个,subplot 2,2,4):

Image plotted

如您所见,r = 0.25 (5 - 4...) 仅绘制在极轴上

为什么会这样?我该如何解决?

1 个答案:

答案 0 :(得分:1)

问题似乎在于该注释的位置以及当您使用subplot时,极坐标图半径的限制实际上会发生变化,但注释的位置不会

为了解决这个问题,您实际上可以计算轴的极限并将文本的位置更改为明确地在绘图之外。

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

更好的方法是将标签的Units更改为使用Normalized单位(相对于轴)而不是Data单位。这样,如果轴限制发生变化,它就不会改变。

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]);