这种图可以很好地展示我们的离散数据,前面提到,还需要展示数据变化的显著性特征,所以,我们可以将上图改进一下,将排版设计为2*2、2*3、3*3,我们要留出一个空位用来表示数据的统计学结果。
如图d便是对数据统计学结果的表达,这里用到了玫瑰图的表达形式,与abc图具有了统一的风格。这种玫瑰图是我在visio里面绘制的,每个扇形我都添加了圆角,整体看上去更加柔和。
后来,为了将玫瑰图以更加简单的方式绘制出来,我特意在Matlab中写了一个绘制这种图形的函数。程序可以根据数据的长度将圆形切为相应的块数,在设计扇形时,可以设定扇形开始位置的角度,以及扇形的内偏置角度(从图d可以看出,扇形与刻度线有一定的偏置角度)。以下是函数和主程序的调用格式,主函数需要输入的参数有:数据、开始角度、偏置角度。
函数:
function plotRoseAll(data, theta, Inward_theta)
% data: 一行数据,用于确定每个扇形的半径
% theta: 第一个扇形的初始位置角度(度)
% Inward_theta: 扇形向内偏移的角度(度)
N = length(data); % 数据长度,对应扇形的个数
Begin_theta = zeros(1, N);
% 计算每个扇形的起始角度
for i = 1:N
Begin_theta(i) = theta - 360 / N * (i - 1);
end
Number = 1000; % 确定扇形的边界点细化个数
for i = 1:N
% 计算每个扇形的角度范围
Begin = Begin_theta(i) - Inward_theta;
End = Begin - (360 - 2 * N * Inward_theta) / N;
% 生成弧线数据点
thetaSpan = linspace(Begin, End, Number);
R = ones(1, Number) * data(i); % 以数据项为半径的圆弧
% 扇形的边界点
r = [0 data(i)];
Begin_point = [Begin, Begin];
End_point = [End, End];
% 绘制该扇形
polarplot(thetaSpan * pi / 180, R, 'b') % 绘制圆弧
hold on
polarplot(Begin_point * pi / 180, r, 'b'); % 绘制起始半径
polarplot(End_point * pi / 180, r, 'b'); % 绘制结束半径
end
% 图形设置
title('Rose Plot');
grid on;
end
主程序:
plotRoseAll(data, theta, Inward_theta)
数据图输出后,可以将结果复制到Visio中进行再次编辑,主要是线条的连接组合和图形的配色,圆角也可以在Visio中设置。
如果你觉得我的分享对你有帮助的话,欢迎大家在这里点赞、在看、分享。当然,也欢迎大家在这里打赏。互动越多,更新越快哦~
声明:本公众号的所有原创内容,在未经允许的情况下,不得用于任何商业用途,违者必究。