文章目錄
- 一、簡介
- 二、安裝
- 三、示例
- 四、所有參數說明
一、簡介
雷達圖(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π(i?1)?,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;
endline_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
代表紅色。