Hello 真的好久不见,这期画一个Nature同款雷达图,原图是下图中的i图,长这样:
本图出自:
- Pan, X., Li, X., Dong, L. et al. Tumour vasculature at single-cell resolution. Nature 632, 429–436 (2024). https://doi.org/10.1038/s41586-024-07698-1
本期复刻效果:
本期说是绘图复刻其实本质上是对很久之前写的雷达图工具的一次功能开发,雷达图工具可以在 fileexchange 找到:
当然我会把工具和完整代码一并放入gitee平台并把链接在文末分享。先开始正文,首先给个该工具的基本用法:
X=randi([2,8],[4,7])+rand([4,7]); % 随机生成数据
RC=radarChart(X); % 生成雷达图对象
RC.PropName={'建模','实验','编程','总结','撰写','创新','摸鱼'};
RC.ClassName={'同门A','同门B','同门C','同门D'};
RC=RC.draw(); % 画图
RC=RC.legend(); % 添加图例
可以看到使用方法非常简单。
以下开始复刻 Nature绘图:
正文
0.数据准备和对象创建
figure('Position',[600,200,600,600]);
Data1 = rand([2,10]);
RC = radarChart(Data1);
1.基础设置和绘图
包括刻度范围,背景所占范围,初始角度,标签是顺时针还是逆时针排布等信息,以及变量名和配色。
RC.RLim = [0,1]; % 数据范围设置为 0,1 Set the data range to be between 0 and 1
RC.RTick = [0,.5,1]; % 半径刻度 0,.5,1 Set radius ticks at 0, 0.5, and 1
RC.RRange = [.1,1]; % 背景所占的比例范围 Set the range for the background (0.1 to 1)
RC.Rotation = pi/2; % 初始角度 Set the initial angle
RC.ThetaDir = 'reverse'; % 标签排布方向(逆时针还是顺时针) Set the direction of the label arrangement
% 设置变量名
RC.ClassName = {'Stalk-like','Tip-like'};
RC.PropName = num2cell('A':'J');
% RC.PropName = {'A','B','C','D','E','F','G','H','I','J'}
RC.CList = [151,125,154; 179,97,97]./255;
RC = RC.draw();
2.修改背景和刻度线及标签
% 设置一下背景线条粗细等属性
RC.setPropLabel('FontSize',21,'FontName','Times New Roman');
RC.setRTick('LineWidth',2);
RC.setRLabel('Color','none');
RC.setBkg('EdgeColor','none');
RC.setThetaTick('LineWidth',2);
RC.setType('Both')
2.修改图形并添加图例
RC.setPatchN(1, 'LineWidth',5, 'MarkerSize',8);
RC.setPatchN(2, 'LineWidth',5, 'MarkerSize',8);
RC = RC.legend();
RC.setLegend('FontSize',21, 'FontName','Times New Roman');
完
本文完整代码还将被放在gitee仓库: