MATLAB graph绘图中按中心度实现节点平滑渐变着色的方法
实现方法
MATLAB的GraphPlot对象本身支持数值到颜色的批量映射,无需循环调用highlight设置节点颜色,具体实现代码如下:
% 计算度中心度 sdc = centrality(G, 'degree'); % 绘制graph对象图 V = plot(G); % 绑定节点颜色数据为中心度值,自动完成数值到颜色的映射 V.NodeCData = sdc; % 设置渐变配色:jet色阶默认对应低数值蓝色、中数值绿黄色、高数值红色,符合需求 colormap(gca, jet(256)); % 可选:添加颜色条显示中心度和颜色的对应关系 colorbar; % 可选:手动限制颜色映射的数值范围,避免极端值干扰渐变效果,以下示例取5%到95%分位范围 % caxis([prctile(sdc,5), prctile(sdc,95)]);
如果需要更精准控制三色渐变的色值,不想使用自带的jet色阶,可以自定义渐变colormap:
% 自定义蓝(低)-绿黄(中)-红(高)的256阶渐变配色 custom_cmap = interp1([1;128;256], [0 0 1; 0.9 1 0; 1 0 0], linspace(1,256,256)); colormap(gca, custom_cmap);
该方法直接通过NodeCData属性完成数值到颜色的自动映射,渐变效果平滑,运行效率远高于循环设置单个节点颜色。
内容的提问来源于stack exchange,提问作者Autodidactyle
相关产品推荐
相关产品推荐

