【Matlab】雷达图/蛛网图

发布于:2025-05-25 ⋅ 阅读:(21) ⋅ 点赞:(0)

一、简介

雷达图(Radar Chart)又称蛛网图(Spider Chart)是一种常见的多维数据可视化手段,能够直观地对比多个指标并揭示其整体分布特征。

雷达图以中心点为原点,依次向外延伸出 n n n 条放射状轴,每条轴对应一个维度指标。若有数据点 x 1 , x 2 , … , x n {x_1, x_2, \dots, x_n} x1,x2,,xn,则在第 i i i 条轴上,按量值 x i x_i xi 的大小标定距离,将各点连线后即得到一个封闭的多边形——类似雷达扫描回波或昆虫蛛网的形态。

  • 轴的均匀分布:第 i i i 条轴相对于水平线的角度可设为
    θ i = 2 π ( i − 1 ) n , i = 1 , 2 , … , n . \theta_i = \frac{2\pi (i-1)}{n},\quad i=1,2,\dots,n. θi=n2π(i1),i=1,2,,n.
  • 数据标度:各轴通常需先将原始值归一化为 [ 0 , 1 ] [0,1] [0,1] 区间(这个也不是一定的,不同的轴也可以使用不同的量纲,不过需要标注一下),记归一化后数据为 x ~ i \tilde x_i x~i,再映射到同一半径范围。

二、安装

这个用极坐标就可以画,但是要得到一个功能强大、样式丰富的图,比较麻烦,直接用其他人开发的工具箱吧。

去附加功能管理器搜索radar(清空过滤条件),即可看到这个:不是Radar Toolbox,那个是真的雷达工具箱。
在这里插入图片描述
也可以去File Exchange下载:不过截至现在,mathworks的这个网页还没修复,下不了(都一个多星期了还没搞好😅)。

这个不是App,只是个工具箱,即几份代码文件,下载后默认保存在你的C盘某个位置,默认会添加到路径。
在这里插入图片描述

在这里插入图片描述
这个文件夹你可以直接复制到别的地方,或者分享给他人。

三、示例

生成一个示例数据:5行,10列,即5个样本,每个10个指标(比如5个城市的10个指标)。

% 生成 5×10 的随机示例数据(0–10 之间)
rng(1);  
data_matrix = rand(5,10) * 10;

画图:

spider_plot(data_matrix);

在这里插入图片描述

这就是默认的绘图风格。

图中所有的内容都可以自定义:数据标注、标签、数据线型、射线、网状线(web)等内容都可以设置。

下面做一个复杂一点的示例:完整参数见文末。
在这里插入图片描述

close all
clear
clc

%% —— 示例数据生成 —— 
% 生成 5×10 的随机示例数据(0–10 之间)
rng(1);  
data_matrix = rand(5,10) * 10;

%% —— 雷达图绘制 —— 

% 英文标签
labels = {'V1','V2','V3','V4','V5','V6','V7','V8','V9','V10'};

% 配色:五种清晰可区分的颜色
colors = ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd"];

rgb_color = zeros(length(colors), 3);
for i = 1:length(colors)
    rgb_color(i,:) = sscanf(colors(i), '#%2x%2x%2x', [1 3]) / 255;
end

line_styles = {'-','--',':','-.','-'};
markers     = {'o','s','^','d','v'};
legend_str  = {'A','B','C','D','E'}';

% 新建 figure 并设置字体、大小
f = figure('Color','white','Units','inches','Position',[3 3 8 7]);
set(f, ...
    'DefaultAxesFontName','Times New Roman', ...
    'DefaultTextFontName','Times New Roman', ...
    'DefaultAxesFontSize',12, ...
    'DefaultTextFontSize',12);

% 调用 spider_plot
h_spider = spider_plot(data_matrix, ...
    'AxesLabels',        labels, ...
    'AxesDisplay',       'all', ...
    'FillOption',        'on', ...
    'FillTransparency',  0.25, ...
    'Color',             rgb_color, ...
    'LineStyle',         line_styles, ...
    'Marker',            markers, ...
    'MarkerSize',        10, ...
    'LineWidth',         1.1, ...
    'AxesRadial',        'on', ...
    'AxesLabelsRotate',  'off', ...
    'AxesInterval',      2, ...
    'AxesPrecision',     2, ...
    'AxesLabelsOffset',  0.15, ...
    'AxesColor',         'b', ...
    'AxesFont',          'Times New Roman', ...
    'LabelFont',         'simsun', ...
    'BackgroundColor',   'w', ...
    'AxesRadialLineStyle',':', ...
    'AxesRadialLineWidth',1, ...
    'AxesLabelsEdge',    '#8B8386', ...
    'AxesWebLineStyle',  '--', ...
    'AxesFontColor',     'k');

% 添加图例
legend(legend_str, ...
    'Location','south', ...
    'Orientation','horizontal', ...
    'FontSize',12, ...
    'FontName','Times New Roman', ...
    'Position',[0.3750 0.1106 0.2865 0.0214]);

% 保存高分辨率图片
% exportgraphics(gcf, 'radar_plot.png', 'Resolution', 600);

四、所有参数说明

Argument Name Description Default Value Possible Values
AxesLabels 指定每个轴的标签。 auto-generated auto-generated , cell array of strings, 'none'
AxesInterval 更改 web 之间显示的间隔数。 3 integer
AxesPrecision 更改轴上显示值的精度级别。 1 integer, vector
AxesDisplay 更改显示轴文本的轴数。 'all' 'all', 'none', 'one', 'data', 'data-percent'
AxesLimits 手动设置轴限制。 auto-scaled matrix (2 x size(P, 2)), auto-scaled
FillOption 切换填充颜色选项。 'off' 'off', 'on', cell array of character vectors
FillTransparency 设置填充颜色透明度。 0.1 scalar in range (0, 1), vector
Color 指定线条颜色,以 RGB 三元组形式指定。 MATLAB colors RGB triplet
LineStyle 更改绘图的线条样式。 '-' '-', '--', ':', '-.', 'none', cell array of character vectors
LineWidth 更改线宽,其中 1 point 为 1/72 英寸。 0.5 positive value, vector
LineTransparency 设置线条颜色透明度。 1 scalar in range (0, 1), vector
Marker 更改绘图的标记符号。 'o' 'o', '*', 's', 'd', '+', '.', 'x', '^', 'v', 'h', 'none', cell array of character vectors
MarkerSize 更改标记大小,其中 1 point 为 1/72 英寸。 36 positive value, vector
MarkerTransparency 设置标记颜色透明度。 1 scalar in range (0, 1), vector
AxesFont 更改轴上显示的值的字体类型。 'Helvetica' supported font name
LabelFont 更改标签的字体类型。 'Helvetica' supported font name
AxesFontSize 更改轴上显示的值的字体大小。 10 scalar value greater than zero
AxesFontColor 更改轴上显示的值的字体颜色。 'black' RGB triplet
LabelFontSize 更改标签的字体大小。 10 scalar value greater than zero
Direction 更改绘制的数据和轴标签的旋转方向。 'clockwise' 'clockwise', 'counterclockwise'
AxesDirection 更改轴的方向。 'normal' 'normal', 'reverse', cell array of character vectors
AxesLabelsOffset 调整轴标签的位置偏移。 0.2 positive value
AxesDataOffset AxesDisplay 设置为 'data' 时,调整数据标签的位置偏移。 0.1 positive value
AxesScaling 更改轴的缩放。 'linear' 'linear', 'log', cell array of character vectors
AxesColor 更改 spider 轴的颜色。 'grey' RGB triplet, hexadecimal color code
AxesLabelsEdge 更改轴标签的边缘颜色。 'black' RGB triplet, hexadecimal color code, 'none'
AxesOffset 更改轴与原点的偏移。 1 any integer less than the axes interval
AxesZoom 更改轴的缩放。 0.7 scalar in range (0, 1)
AxesHorzAlign 更改轴刻度标签的水平对齐方式。 'center' 'center', 'left', 'right', 'quadrant'
AxesVertAlign 更改轴刻度标签的垂直对齐方式。 'middle' 'middle', 'top', 'cap', 'bottom', 'baseline', 'quadrant'
PlotVisible 更改绘制的线条和标记的可见性。 'on' 'on', 'off'
AxesTickLabels 更改轴刻度标签。 'data' cell array of character vectors
AxesInterpreter 更改轴标签和轴刻度标签的文本解释器。 'tex' 'tex', 'latex', 'none', cell array of character vectors
BackgroundColor 更改背景颜色。 'white' RGB triplet, hexadecimal color code, 'r', 'g', 'b', …
MinorGrid 切换次要网格。 'off' 'off', 'on'
MinorGridInterval 更改主要网格线之间的次要网格线数量。 2 integer value greater than zero
AxesZero 在值零处添加参考轴。 'off' 'off', 'on'
AxesZeroColor 更改零参考轴的颜色。 'black' RGB triplet, hexadecimal color code, 'r', 'g', 'b', …
AxesZeroWidth 更改零参考轴的线宽。 2 positive value
AxesRadial 切换径向轴。 'on' 'on', 'off'
AxesWeb 切换 web 轴。 'on' 'on', 'off'
AxesShaded 切换轴周围的阴影区域。 'off' 'off', 'on'
AxesShadedLimits 设置阴影区域的限制。 AxesLimits cell array (matrix of 2 x size(P, 2))
AxesShadedColor 更改阴影区域的颜色。 'green' RGB triplet, hexadecimal color code, 'r', 'g', 'b', cell array
AxesShadedTransparency 设置阴影区域透明度。 0.2 vector in range (0, 1)
AxesLabelsRotate 旋转轴标签以与轴对齐。 'off' 'off', 'on'
AxesHandle 指定要在其中绘图的轴。 new axes Axes object
ErrorBars 使用 +/- 标准差端点切换误差条模式。 'off' 'off', 'on'
AxesWebType 设置绘制的 web 类型。 'web' 'web', 'circular'
AxesTickFormat 格式化轴刻度文本。 覆盖 AxesPrecision 值。 '%.2f' cell array of character vectors
FillCData 当填充选项设置为 'interp' 时,设置填充颜色。 empty vector
ErrorPositive 'ErrorBars' 设置为 'on' 时,设置正方向的误差条长度。 empty vector
ErrorNegative 'ErrorBars' 设置为 'on' 时,设置负方向的误差条长度。 empty vector
AxesStart 设置轴的初始起点。 指定一个介于 [0, 2pi] 之间的值。 pi/2 scalar
AxesRadialLineWidth 设置径向轴的线宽。 1.5 scalar
AxesRadialLineStyle 设置径向轴的线条样式。 '-' '-', '--', ':', '-.', 'none', cell array of character vectors
AxesWebLineWidth 设置轴 web 的线宽。 1 scalar
AxesWebLineStyle 设置轴 web 的线条样式。 '-' '-', '--', ':', '-.', 'none', cell array of character vectors
LegendLabels 添加图例标签。 (仅 spider_plot_class 属性) N/A (类属性) cell array of character vectors
LegendHandle 自定义图例设置。 (仅 spider_plot_class 属性) N/A (类属性) legend handle object
TiledLayoutHandle 自定义分块布局设置。 (仅 spider_plot_class 属性) N/A (类属性) tiled chart layout handle object
TiledLegendHandle 自定义分块图例设置。 (仅 spider_plot_class 属性) N/A (类属性) legend handle object of tiled layout
NextTileIter 使用连续分块图进行迭代。 (仅 spider_plot_class 属性) 1 N/A

Notes:

  • “N/A” 在 Default Value 列中表示该属性仅适用于 spider_plot_class,而不是作为 Name-Value Pair 参数直接传递给函数。
  • RGB triplet 指的是 [R, G, B] 的一个数组,其中 R, G, B 分别代表红色,绿色,蓝色的强度,取值范围为 [0, 1]。
  • hexadecimal color code 指的是以 # 开头的十六进制颜色码,例如 #FF0000 代表红色。

网站公告

今日签到

点亮在社区的每一天
去签到