在之前的文章中,复刻了《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文件中。

%% 数据准备% 读取数据% 自变量dataxload datax.mat;% 因变量datayload 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 onendhXLabel = xlabel('Cortical depth (normalized)');hYLabel = ylabel('cell density');hTitle = title('MOp cells');

为了避免坐标轴遮挡问题,使用‘plot’命令再绘制一条坐标轴。

hold onplot(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 onXL = 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)相关推荐

  1. Matlab论文插图绘制模板第39期—阶梯图(Stairs)

    在之前的文章中,分享了Matlab折线图的绘制模板: 三维折线图的绘制模板: 以及一些特殊的线图: 这次再来分享一种线图:阶梯图. 先来看一下成品效果: 特别提示:Matlab论文插图绘制模板系列,旨 ...

  2. Matlab论文插图绘制模板第48期—平行坐标图(Parallelplot)

    ​上一期文章中,分享了Matlab帕累托图的绘制模板: 这一次,再来分享一种特殊的线图:平行坐标图. '平行坐标图是一种通常的可视化方法,用于对高维几何和多元数据的可视化--为了克服传统的笛卡尔直角坐 ...

  3. Matlab论文插图绘制模板第28期—折线图进阶

    在之前的文章中,分享了Matlab折线图的绘制模板: 散点图的绘制模板: 也介绍了误差棒的使用方式: 这一次,我们尝试在折线图的基础上,加入更多的元素,比如线型.符号类型.公式,并在此基础上添加误差棒 ...

  4. Matlab论文插图绘制模板第56期—曲面图(Surf)

    在之前的文章中,分享了一系列Matlab网格曲面图的绘制模板: 这一次,再来分享一下曲面图的绘制模板. 先来看一下成品效果: 特别提示:Matlab论文插图绘制模板系列,旨在降低大家使用Matlab进 ...

  5. Matlab论文插图绘制模板第61期—横向多组堆叠图

    之前有分享过一个Matlab多组堆叠图的绘制模板: 最近有朋友私信我,想让我出一个横向的多组堆叠图. 所以,这次就再出一期横向多组堆叠图的教程. 先来看一下成品效果: 特别提示:Matlab论文插图绘 ...

  6. MATLAB | 我用MATLAB复刻了这场颜色图生成大赛的作品

    我用MATLAB复刻了这场颜色图绘制大赛的作品 这场比赛居然已经是七年前的事情了,大佬A Frayed Knot在StackExchange上发起了挑战,举办了名为Tweetable Mathemat ...

  7. Matlab论文插图绘制模板第24期—柱状图(多组堆叠)

    在之前的文章中,分享了一个Matlab柱状图的绘制模板: 以及一些特殊形式的柱状图: 昨天有朋友问我,类似下面这种多组堆叠图应该怎么画. 我告诉她,之前有类似的教程,稍微举一反三一下,不难画. 但回头 ...

  8. Matlab论文插图绘制模板第28期—柱状图(带误差棒errorbar)

    在之前的文章中,分享了Matlab柱状图的绘制模板: 折线图的绘制模板: 散点图的绘制模板: 在实际应用时,很多时候需要在以上内容基础上添加误差棒. 所以,这次来分享一下带误差棒的柱状图的绘制模板,算 ...

  9. Matlab论文插图绘制模板第69期—带误差棒的折线图(Errorbar)

    在之前的文章中,分享了一系列Matlab折线图的绘制模板: 这一次,再来分享一种特殊的折线图:带误差棒的折线图. 先来看一下成品效果: 特别提示:Matlab论文插图绘制模板系列,旨在降低大家使用Ma ...

  10. Matlab论文插图绘制模板第50期—分簇散点图(Swarmchart)

    在之前的文章中,分享了很多Matlab散点图的绘制模板: 这一次,再来分享一种特殊的散点图:分簇散点图. 先来看一下成品效果: 特别提示:Matlab论文插图绘制模板系列,旨在降低大家使用Matlab ...

最新文章

  1. tomcat9配置https-pfx
  2. 微软MCITP系列课程(二七)管理域和林信任
  3. hdu4772 水模拟
  4. python自动化_Python自动化测试入门必读
  5. android网络质量,基于Android的移动通信网络质量信息系统的设计与开发
  6. 一个含有crc32算法的CrackMe分析
  7. word2010页脚页码的总页数修改方法
  8. java 8 lambda_异常作弊– Java 8 Lambdas
  9. SQL的主键和外键约束 小记
  10. 25款.NET开发工具
  11. 逆战选择服务器后显示器,让你的画面更流畅 逆战FPS值调节方法
  12. 在Ubuntu上安装JDK、Ant、Jmeter和Jenkins
  13. 使用Outlook Connector插件之后 qq发送过来的邮件为乱码
  14. configure: error: Library requirements (libpcre >= 7.8) not met
  15. 一个五年Android 开发者百度、阿里、聚美、映客的面试心经
  16. LibreELEC(kodi)基本设置
  17. 2019美研计算机录取,2019美研录取更新 | 春节OFFER大集锦,没有比OFFER更好的新年礼物了!...
  18. 三星8核S5P6818 核心板(ARM Cortex-A53架构)
  19. 手把手教你如何巧用Github的Action功能
  20. solidworks批量图号分离_SolidWorks2014怎么实现图号名称分离?

热门文章

  1. STM32--舵机(SG90)
  2. 用java观察者模式解耦经典三层架构
  3. 基于HTML5实现五彩连珠小游戏
  4. 转换小写金额为大写金额
  5. 中国计算机省份排名,大变局开启!2019全国各省GDP排名出炉,哪些省份掉队了?...
  6. CATIA软件基础操作及知识工程
  7. ubuntu安装opencv4
  8. 这 4 个远程桌面开源了!
  9. SAMBA文件共享服务
  10. 毕业设计,管理系统,大学生毕业设计应该这么做