手搓雷达图(MATLAB)
看下别人做出来什么效果
话不多说,咱们直接开始
%% 可修改
labels = {'用户等级', '发帖数', '发帖频率', '点度中心度', '中介中心度', '帖子类型计分', '被列为提案数'};
cluster_centers = [0.8, 4.5, 3.2, 4.0, 3.8, 4.5, 4.2; % 核心用户0.2, 0.5, 0.3, 0.2, 0.1, 0.0, 0.0; % 边缘用户0.6, 2.0, 2.5, 3.5, 2.8, 1.5, 1.2; % 积极社交用户0.4, 1.8, 1.0, 1.2, 1.5, 2.0, 1.8; % 潜在创意用户0.5, 3.0, 4.0, 2.0, 1.8, 3.0, 2.5]; % 积极创新用户%%
% 确保雷达图闭合:首尾数据点重复
cluster_centers = [cluster_centers, cluster_centers(:,1)]; % 添加第一列到末尾
labels = [labels, labels(1)]; % 标签同步扩展% 计算角度(0到2π均匀分布)
angles = linspace(0, 2*pi, length(labels));
angles(end) = angles(1); % 确保闭合% 绘制雷达图
figure;
polarplot(angles, cluster_centers(1,:), 'LineWidth', 1.5, 'DisplayName', '核心用户');
hold on;
polarplot(angles, cluster_centers(2,:), 'LineWidth', 1.5, 'DisplayName', '边缘用户');
polarplot(angles, cluster_centers(3,:), 'LineWidth', 1.5, 'DisplayName', '积极社交用户');
polarplot(angles, cluster_centers(4,:), 'LineWidth', 1.5, 'DisplayName', '潜在创意用户');
polarplot(angles, cluster_centers(5,:), 'LineWidth', 1.5, 'DisplayName', '积极创新用户');% 添加极坐标标签和标题
title('用户聚类中心雷达图');
legend('Location', 'southoutside', 'Orientation', 'horizontal'); % 图例位置% 添加方向标签(调整文本位置)
ax = gca;
ax.ThetaTick = rad2deg(angles(1:end-1)); % 角度刻度(排除闭合点)
ax.ThetaTickLabel = labels(1:end-1); % 标签名称
ax.RTickLabel = []; % 隐藏半径刻度数值
ax.FontSize = 10;for i = 1:length(labels)-1text(angles(i), labels{i}, 'HorizontalAlignment', 'center', 'FontSize', 10);
end
可能会有一个报错信息,咱们不用管他
看下效果
完美,Over!