【问题标题】:Polar gridlines on a Cartesian scatter plot笛卡尔散点图上的极坐标网格线
【发布时间】:2012-01-26 08:58:42
【问题描述】:

我有一个脚本可以根据另一个脚本生成的 x-y 数据(离散数据点,不连续)创建散点图(使用 gscatter)。由于这些数据点实际上是某些对象在圆形空间中的位置,因此添加极坐标网格线会使绘图更有意义。

有谁知道如何在笛卡尔散点图上显示极坐标网格线,还是我最好使用极坐标图?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    我曾经制作过这个脚本,用于在常规绘图上绘制极坐标系。也许它对你有用。它基于this 脚本,但简化为仅绘制坐标系而没有数据。如果这不是您想要的,请查看链接脚本,也许它也可以提供帮助。

    请务必根据需要调整半径!我通常禁用该轴,但如果您需要另一种外观,则由您来解决这个问题:)

    R=6000; %radius
    S=10;   %num circ.lines
    N=10;   %num ang.lines
    
    sect_width=2*pi/N;    
    offset_angle=0:sect_width:2*pi-sect_width;
    
    %------------------
    r=linspace(0,R,S+1);
    w=0:.01:2*pi;
    
    clf %remove if needed
    
    hold on
    axis equal
    for n=2:length(r)
    
        plot(real(r(n)*exp(j*w)),imag(r(n)*exp(j*w)),'k--')
    
    end
    
    
    for n=1:length(offset_angle)
    
        plot(real([0 R]*exp(j*offset_angle(n))),imag([0 R]*exp(j*offset_angle(n))),'k-')
    
    end
    %------------------
    

    【讨论】:

      【解决方案2】:

      您始终可以使用pol2cart 函数来生成极坐标网格线。 例如:

      function DrawGridLines
          x = randn(10);
          y = randn(10);
          figure;scatter(x(:),y(:));
          hold on ;
          for angle =  0:20:(360-20)
              [x1,y1] = pol2cart(  angle / 180 * pi , [0 2]);
              plot(x1,y1,'r')
          end
      
          for rho  =  0:0.1:2
              [x1,y1] = pol2cart(  0:0.01:2*pi , rho);
              plot(x1,y1,'b')
          end
          axis equal
      end
      

      【讨论】:

      • (对我自己问题的快速回复)就在我发布问题之后,我想到了将我的散点图叠加在显示单位圆的极坐标图上。 t = 0:.01:2*pi; polar(t,ceil(sin(t)),'--k') 坚持 gscatter(xs,ys,gs,'kkkkkk','o+^s*d',8,'on')通缉。感谢大家的关注。赫罗尔·阿斯兰
      • 更正:使用 sin(0*t) 的空极坐标图效果更好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      相关资源
      最近更新 更多