我有一堆角度数据,范围从0到180度,以及等量的距离范围从0到100米。寻找一种绘制半圆上的角度和距离的方法
我正在寻找一种方法来获得一个半圆形(如玫瑰图的上半部分),其中对于每个数据点,我可以有一个从中心出来的酒吧,相关的角度,酒吧长度对应于距离。
有没有办法做到这一点?
我有一堆角度数据,范围从0到180度,以及等量的距离范围从0到100米。寻找一种绘制半圆上的角度和距离的方法
我正在寻找一种方法来获得一个半圆形(如玫瑰图的上半部分),其中对于每个数据点,我可以有一个从中心出来的酒吧,相关的角度,酒吧长度对应于距离。
有没有办法做到这一点?
我认为这可能会做你想做的。只需转换为笛卡儿并分成单元阵列即可。
%Generate sample data
theta = pi*rand(10, 1); r = 15*rand(size(theta));
%Make (x,y) coordinates
x0 = r.*cos(theta);
y0 = r.*sin(theta);
%Convert to cell arrays, this is assuming a column vector, if it were a 1 x N row vector change the `2` to a `1` and `vertcat` to `horzcat`.
xy = vertcat(num2cell([zeros(size(x0)), x0], 2)', num2cell([zeros(size(y0)), y0], 2)');
%Make the plot
plot(xy{:})
编辑: 在解释
xy = vertcat(num2cell([zeros(size(x0)), x0], 2)', num2cell([zeros(size(y0)), y0], 2)');
线更好。
vertcat(A,B)
与[A; B]
相同,只是略微整齐。所以它连接了x
和y
坐标。
num2cell(x, 2)
将N×M矩阵x
转换成包含1×M个向量的N×1单元阵列。这允许每条线都拥有它自己的单元格。
通过移位然后连接单元格阵列,最终得到第一行的x坐标为xy{1}
,y坐标为xy{2}
等等。
因此,争论的情节看,当你做的plot(xy{:})
是
plot(line1X, line1Y, line2X, line2Y, ...)
不,如果我想绘制两个不同的函数'x = linspace(0,2 * pi,100); plot(x,sin(x),x,cos(x))'将它放入单元格数组使matlab将'xy {:}'看成'plot([0; x(1)],[0; y(1)],[0; x(2)],[0; y(2)],...)' – user1543042
为什么不会使用一个额外线的常规'rose'情节,如'ylim([0 2)'? – bla
不要破坏你的帖子。你为什么想这么做?通过破坏您的帖子,您有可能被暂停。人们对你有帮助,为什么不帮助你,并为将来的读者保留你的文章? –