2

我有两个数据集。一个详细列出的列表angles(我正在绘制玫瑰图):

angles
-0.8481065519
0.0367932161
2.6273740453
...
n

另一个,详细说明这组角度的方向统计:

angle,error
-0.848106563,0.8452778824

其中angle本质上定义了方向平均值和error循环方差,本质上是angle

到目前为止,我已经使用一组角度绘制了一个玫瑰直方图,如下所示:

h = rose(angles,36)

我想围绕它创建一个方向统计图angle(它不需要长度/大小 - 只是到圆图的边缘)error。举个例子:

我想做的一个例子。

我在 Matlab 中手动添加了线条。如果可能的话,最好在弧内也有阴影。或者,(并且可能是首选)将在玫瑰图箱上方仅放置一条条子(因此它不覆盖数据),并带有一条中心线(angle显示error.

提前致谢。

4

1 回答 1

3

这个怎么样?

%// Data
angles = 2*pi*.8*randn(1,1e4);
angle = -0.848106563;
error = 0.8452778824;

%// Plot rose
rose(angles, 36);
axis image %// make axis square
hold on

%// Plot mean
a = axis;
a = a(2); %// size of axis
plot([0 cos(angle)*a], [0 sin(angle)*a], 'r')

%// Plot error as many shaded triangles that compose a circular wedge
t = linspace(-error/2+angle,error/2+angle,100); %// increase "100" if needed
for k = 1:numel(t)-1
    h = patch([0 cos(t(k))*a cos(t(k+1))*a 0], ...
        [0 sin(t(k))*a sin(t(k+1))*a 0], [.5 0 0], 'edgecolor', 'none');
        %// change color [.5 0 0] to something else if desired. Note also alpha
    set(h,'Facealpha',.3) %// make transparent
end     

%// Place rose on top by rearranging order of axis children
ch = get(gca,'children');
set(gca,'children',[ch(2:end); ch(1)]);

在此处输入图像描述

为此,您需要使用具有透明度的图形渲染器。所以你可能需要调整图形的renderer属性。

于 2014-05-14T17:56:13.540 回答