我正在使用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
):
如您所见,r = 0.25 (5 - 4...)
仅绘制在极轴上。
为什么会这样?我该如何解决?
答案 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]);
更好的方法是将标签的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]);