【问题标题】:Fixing the Radial Axis on MATLAB Polar Plots在 MATLAB 极坐标图上固定径向轴
【发布时间】:2010-09-18 14:03:34
【问题描述】:

我在 MATLAB 中使用极坐标图 (POLAR(THETA,RHO))。

有没有一种简单的方法可以将径向轴的范围固定为 1.5?

我正在寻找类似于笛卡尔坐标轴的 xlim、ylim 命令的东西。尚未在文档中找到任何内容。

【问题讨论】:

    标签: matlab plot histogram polar-coordinates


    【解决方案1】:

    这是我能够做到的。

    MATLAB 极坐标图(如果您查看可用的 Handle Graphics 选项)没有 xlim 或 ylim 之类的东西。但是,我意识到绘制的第一件事是设置范围,因此我能够在 [-1 1] 绘图上绘制半径范围为 [-.5 .5] 的函数,如下所示:

    theta  = linspace(0,2*pi,100);
    r      = sin(2*theta) .* cos(2*theta);
    r_max  = 1;
    h_fake = polar(theta,r_max*ones(size(theta)));
    hold on;
    h      = polar(theta, r);
    set(h_fake, 'Visible', 'Off');
    

    这看起来不太好,希望有更好的方法来做到这一点,但它确实有效。

    【讨论】:

    • 这很聪明。谢谢。我很惊讶他们没有提供更直接的半径控制。
    • 我也是 - 我不认为想要调整半径会是罕见
    • 我想出了相同的解决方案。不幸的是,他们没有将极坐标图定义为基本图形类型,而是创建补丁来绘制轴并将数据转换为 x 和 y。有时间看一下polar.m的代码,你就会明白了。
    • 正如 Scottie T 上面提到的,极坐标图实际上只是在不可见的笛卡尔图上绘制的一堆补丁、线和文本对象。您可以通过使用以下命令“取消隐藏”它们的句柄来查看形成极坐标图的所有小图形对象: >> kids = get(gca,'Children') % 显示当前坐标区 children >> set(0, 'ShowHiddenHandles','on'); >> hiddenKids = get(gca,'Children') % 也显示隐藏的孩子
    【解决方案2】:

    这对我有用...我希望半径范围达到 30,所以我首先绘制了这个

    polar(0,30,'-k')
    hold on
    

    然后绘制我真正感兴趣的内容。第一个绘制的点隐藏在网格标记后面。只要确保包括

    hold off
    

    在您的最终绘图命令之后。

    【讨论】:

    • 我很欣赏这个答案的简单性。像魅力一样工作!
    【解决方案3】:

    如果其他人遇到这种情况,这里是 解决方案:

    正如 Scottie Tgnovice 所指出的,Matlab 基本上使用极坐标函数作为标准的接口情节,但在幕后有很多格式,使它看起来很极性。查看极坐标图的 XLim 和 YLim 属性的值,您会注意到它们实际上是笛卡尔坐标中绘图的 x 和 y 限制。因此,要设置半径限制,请使用 xlim 和 ylim,或轴,并注意您设置的值:

    rlim = 10;
    axis([-1 1 -1 1]*rlim);
    

    ...仅此而已。快乐的 Matlabbing :)

    【讨论】:

      【解决方案4】:

      简单的解决方案是制作一个假图并将其颜色设置为白色。

      fake=100;
      polar(0,fake,'w');
      hold on;
      
      real=10;
      polar(0,real,'w');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多