《Nature》论文插图复刻第3期—面积图(Part2-100)
在之前的文章中,复刻了《Nature》高清论文插图集Part2中的第456号插图的左下的多组柱状图:
Part1中第305号插图左侧的横向单组多色柱状图:
这一期,我们来复刻《Nature》高清论文插图集Part2中第100号插图(以下简称100)右上方的面积图。
先来看一下复刻效果:
特别提示:Nature论文插图复刻系列,旨在降低科研绘图的门槛,让大家不再觉得“顶级期刊里的论文插图对自己来说遥不可及”。如果觉得有用,不妨分享给你身边的人。
1 要素分析
100中每一曲线对象利用具有一定透明度的不同颜色进行了填充,这些颜色在左上图(a)的Legend中可以找到。
此外,其坐标轴左、上、右部分都是没有刻度的,且其下方轴线的刻度标签是竖排文字。
这些都是需要注意的点。
2 复刻工具
Matlab R2022a
Matlab科研绘图插件-ColorCopy配色方案提取工具
Matlab科研绘图插件-ColorMap渐变色生成/编辑工具
Matlab科研绘图插件-Fig2Data图片原始数据提取工具
3 数据准备及配色方案提取
此部分主要是提取100中的数据以及配色方案,以用于绘图。
首先,使用Fig2Data工具提取图中曲线数据(为了方便,仅提取了20条曲线中的其中16条用于后续处理)。
由于使用Fig2Data工具手工提取的曲线采样密度不够,直接成图的话会有一些‘棱角分明’:
因此利用‘interp1’命令,采用‘spline’插值方法对手工采样点进行加密:
加密后的数据保存在了datax.mat和datay.mat文件中。
%% 数据准备
% 读取数据
% 自变量datax
load datax.mat;
% 因变量datay
load datay.mat;
然后,利用ColorCopy工具提取配色方案:
%% 颜色提取
C = ColorCopy;
close
由于原始曲线为20条,而我只提取了其中的16条,因此需要重新分配颜色。
然而,原文作者使用的是渐变色配色,如果任意分配,可能会导致颜色变化不均匀。
因此,这里我使用了ColorMap渐变色生成/编辑器对ColorCopy所得到的颜色矩阵C进行了降采样:
C = ColorMap(C,N);
其中,N表示降采样后颜色的数量,即16。
4 绘图
首先,利用‘area’命令绘制初始的面积图。
for i = 1:N
area(datax(i,:),datay(i,:),'LineWidth',2,'FaceColor',C(i,:),'EdgeColor',C(i,:),...
'FaceAlpha',.3,'EdgeAlpha',1);
hold on
end
hXLabel = xlabel('Cortical depth (normalized)');
hYLabel = ylabel('cell density');
hTitle = title('MOp cells');
为了避免坐标轴遮挡问题,使用‘plot’命令再绘制一条坐标轴。
hold on
plot(0:0.2:1.2,zeros(1,7),'k','LineWidth', 1)
再然后,对照原图,对坐标区细节进行进一步的调整:
% 坐标轴参数调整
set(gca, 'LineWidth', 1,... % 线宽
'Box', 'off', ... % 边框
'XGrid', 'off', 'YGrid', 'off', ... % 网格
'TickDir', 'out', 'TickLength', [.01 .01], ... % 刻度
'XMinorTick', 'off', 'YMinorTick', 'off', ... % 小刻度
'XColor', [.1 .1 .1], 'YColor', [.1 .1 .1],... % 坐标轴颜色
'XTick', 0:0.2:1.2,... % 刻度与范围
'XLim', [-0.05 1.1],...
'XTickLabels',{num2str([0:0.2:1]','%.1f')},...
'XTickLabelRotation',90,...
'YTick', [],...
'YLim', [0 1])
% 添加上、右框线
hold on
XL = get(gca,'xlim'); XR = XL(2);
YL = get(gca,'ylim'); YT = YL(2);
xc = get(gca,'XColor');
yc = get(gca,'YColor');
plot(XL,YT*ones(size(XL)),'color', xc,'linewidth',1)
plot(XR*ones(size(YL)),YL,'color', yc,'linewidth',1)
% 字体字号
set(gca, 'FontName', 'Arial', 'FontSize', 12)
set([hXLabel,hYLabel], 'FontName', 'Arial', 'FontSize', 13)
set(hTitle, 'FontSize', 14)
% 背景颜色
set(gcf,'Color',[1 1 1])
最后,按照所需分辨率输出图片:
figW = figureWidth;
figH = figureHeight;
set(figureHandle,'PaperUnits',figureUnits);
set(figureHandle,'PaperPosition',[0 0 figW figH]);
fileout = 'test';
print(figureHandle,[fileout,'.png'],'-r300','-dpng');
可以说还原度还是比较高的。
大家还想看我复刻哪张图,可以告诉我号码。
以上。
获取方式:
Nature面积图的Matlab复刻代码
《Nature》论文插图复刻第3期—面积图(Part2-100)相关推荐
- Matlab论文插图绘制模板第39期—阶梯图(Stairs)
在之前的文章中,分享了Matlab折线图的绘制模板: 三维折线图的绘制模板: 以及一些特殊的线图: 这次再来分享一种线图:阶梯图. 先来看一下成品效果: 特别提示:Matlab论文插图绘制模板系列,旨 ...
- Matlab论文插图绘制模板第48期—平行坐标图(Parallelplot)
上一期文章中,分享了Matlab帕累托图的绘制模板: 这一次,再来分享一种特殊的线图:平行坐标图. '平行坐标图是一种通常的可视化方法,用于对高维几何和多元数据的可视化--为了克服传统的笛卡尔直角坐 ...
- Matlab论文插图绘制模板第28期—折线图进阶
在之前的文章中,分享了Matlab折线图的绘制模板: 散点图的绘制模板: 也介绍了误差棒的使用方式: 这一次,我们尝试在折线图的基础上,加入更多的元素,比如线型.符号类型.公式,并在此基础上添加误差棒 ...
- Matlab论文插图绘制模板第56期—曲面图(Surf)
在之前的文章中,分享了一系列Matlab网格曲面图的绘制模板: 这一次,再来分享一下曲面图的绘制模板. 先来看一下成品效果: 特别提示:Matlab论文插图绘制模板系列,旨在降低大家使用Matlab进 ...
- Matlab论文插图绘制模板第61期—横向多组堆叠图
之前有分享过一个Matlab多组堆叠图的绘制模板: 最近有朋友私信我,想让我出一个横向的多组堆叠图. 所以,这次就再出一期横向多组堆叠图的教程. 先来看一下成品效果: 特别提示:Matlab论文插图绘 ...
- MATLAB | 我用MATLAB复刻了这场颜色图生成大赛的作品
我用MATLAB复刻了这场颜色图绘制大赛的作品 这场比赛居然已经是七年前的事情了,大佬A Frayed Knot在StackExchange上发起了挑战,举办了名为Tweetable Mathemat ...
- Matlab论文插图绘制模板第24期—柱状图(多组堆叠)
在之前的文章中,分享了一个Matlab柱状图的绘制模板: 以及一些特殊形式的柱状图: 昨天有朋友问我,类似下面这种多组堆叠图应该怎么画. 我告诉她,之前有类似的教程,稍微举一反三一下,不难画. 但回头 ...
- Matlab论文插图绘制模板第28期—柱状图(带误差棒errorbar)
在之前的文章中,分享了Matlab柱状图的绘制模板: 折线图的绘制模板: 散点图的绘制模板: 在实际应用时,很多时候需要在以上内容基础上添加误差棒. 所以,这次来分享一下带误差棒的柱状图的绘制模板,算 ...
- Matlab论文插图绘制模板第69期—带误差棒的折线图(Errorbar)
在之前的文章中,分享了一系列Matlab折线图的绘制模板: 这一次,再来分享一种特殊的折线图:带误差棒的折线图. 先来看一下成品效果: 特别提示:Matlab论文插图绘制模板系列,旨在降低大家使用Ma ...
- Matlab论文插图绘制模板第50期—分簇散点图(Swarmchart)
在之前的文章中,分享了很多Matlab散点图的绘制模板: 这一次,再来分享一种特殊的散点图:分簇散点图. 先来看一下成品效果: 特别提示:Matlab论文插图绘制模板系列,旨在降低大家使用Matlab ...
最新文章
- tomcat9配置https-pfx
- 微软MCITP系列课程(二七)管理域和林信任
- hdu4772 水模拟
- python自动化_Python自动化测试入门必读
- android网络质量,基于Android的移动通信网络质量信息系统的设计与开发
- 一个含有crc32算法的CrackMe分析
- word2010页脚页码的总页数修改方法
- java 8 lambda_异常作弊– Java 8 Lambdas
- SQL的主键和外键约束 小记
- 25款.NET开发工具
- 逆战选择服务器后显示器,让你的画面更流畅 逆战FPS值调节方法
- 在Ubuntu上安装JDK、Ant、Jmeter和Jenkins
- 使用Outlook Connector插件之后 qq发送过来的邮件为乱码
- configure: error: Library requirements (libpcre >= 7.8) not met
- 一个五年Android 开发者百度、阿里、聚美、映客的面试心经
- LibreELEC(kodi)基本设置
- 2019美研计算机录取,2019美研录取更新 | 春节OFFER大集锦,没有比OFFER更好的新年礼物了!...
- 三星8核S5P6818 核心板(ARM Cortex-A53架构)
- 手把手教你如何巧用Github的Action功能
- solidworks批量图号分离_SolidWorks2014怎么实现图号名称分离?