【问题标题】:Stretch a polarplot() slice拉伸 polarplot() 切片
【发布时间】:2019-03-06 17:28:14
【问题描述】:

我正在 Matlab 中绘制一些极坐标。请参阅下面的示例:

我只是在绘制一个切片,但不知道如何拉伸/扩展这个切片,因为图形窗口中的空间比使用的空间多。在图片中我想“像粉丝一样打开它”。 最小的工作示例:

th = linspace(-pi/2,pi/2,100);
polarplot(th,1.1+zeros(size(th)),'g');
ax = gca;
thetalim([-5 5])
rlim([1.05 1.12])

我尝试使用 ax.Position = [0 0 1 1]; 类似于它在笛卡尔图中的工作方式,但这似乎在这里不起作用。

到目前为止我缺少任何命令或提示吗?

【问题讨论】:

  • 我不太明白你需要什么。 thetalim([-5 5]) 的目的是什么? thetalim([-35 35]) 能达到你想要的吗?否则,如果您真的拉伸 theta 值,则图中的实际角度将与 theta 值不对应。这是你的意图吗?
  • 您的第二个假设是正确的。我只想扩展例如的显式范围[-5 5]。我知道这将不再直观地表示“真实”角度,但轴刻度仍将显示数值。

标签: matlab matlab-figure polar-coordinates


【解决方案1】:

我只能想到一个变通的解决方案:增加传递给polarplot的theta值以在图中获得更大的角度,然后重新标记theta轴:

stretch = 3; % stretch factor
th = linspace(-pi/2,pi/2,100);
polarplot(th*stretch,1.1+zeros(size(th)),'g'); % apply strech to theta
ax = gca;
thetalim([-5 5]*stretch) % take stretch into account when setting theta axis limit
rlim([1.05 1.12])
ax = gca;
ax.ThetaTickLabel = strsplit(num2str((ax.ThetaTick/stretch))); % correct theta labels

在最后一行中,我保留了默认的 theta 刻度并重新标记它们。您可能更喜欢手动指定其他值,例如

ax.ThetaTick = stretch*(-5:5); % specify theta ticks, including stretch
ax.ThetaTickLabel = strsplit(num2str((ax.ThetaTick/stretch))); % correct theta labels

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    相关资源
    最近更新 更多