• 《Nature》论文插图的Matlab复刻第4期—单组多色柱状图(Part2-82)


    在之前的文章中,复刻了《Nature》论文中的多组柱状图

    横向单组多色柱状图

    以及面积图

    这一期,我们来复刻《Nature》高清论文插图集Part2中第82号插图中图(b)的单组多色柱状图(以下简称82)。

    先来看一下复刻效果

    特别提示:Nature论文插图复刻系列,旨在降低科研绘图的门槛,让大家不再觉得“顶级期刊里的论文插图对自己来说遥不可及”。如果觉得有用,不妨分享给你身边的人


     

    1 要素分析

    82中y轴[0.1 0.3 0.5]位置处存在网格线,因此需要对‘MinorGrid’相关属性进行设置

    此外,其坐标轴上、右部分是没有刻度的,且y轴0位置处没有‘baseline’

    这些都是需要注意的点。

     

    2 复刻工具

    • Matlab R2022a

    • Matlab科研绘图插件-ColorCopy配色方案提取工具

    • Matlab科研绘图插件-Fig2Data图片原始数据提取工具

     

    3 数据准备及配色方案提取

    此部分主要是提取82中的数据以及配色方案,以用于绘图。

    首先,使用Fig2Data工具提取图中柱子顶点信息

    生成Data.txt数据文件后,绘图时仅读取其第二行,也就是y坐标

    1. %% 数据准备
    2. % 读取数据
    3. A = load('Data.txt');
    4. % 自变量
    5. x = 1:32;
    6. % 因变量
    7. dataset = A(2,:);

    然后,利用ColorCopy工具提取配色方案

    1. %% 颜色提取
    2. C = ColorCopy;
    3. close

    4 绘图

    首先,利用‘bar’命令绘制初始的柱状图

    1. GO = bar(x,dataset,0.9,'EdgeColor','none','showbaseline','off');
    2. hYLabel = ylabel({'Coefficient';'of variation'});

    注意'showbaseline'属性设置为'off',以隐藏‘baseline’

    然后,对每一根柱子赋上之前选择好的颜色

    1. % 赋色
    2. GO.FaceColor = 'flat';
    3. for i = 1:32
    4. GO.CData(i,:) = C(i,:);
    5. end

    再然后,对照原图,对坐标区细节进行进一步的调整:​

    1. % 坐标轴参数调整
    2. set(gca, 'LineWidth', 1,... % 线宽
    3. 'Box', 'off', ... % 边框
    4. 'XGrid', 'on', 'YGrid', 'on', ... % 网格线
    5. 'GridColor',[0.8 0.8 0.8],... % 网格线颜色
    6. 'YMinorGrid','on',... % 次网格线
    7. 'MinorGridLineStyle','-',... % 次网格线样式
    8. 'MinorGridColor',[0.8 0.8 0.8],... % 次网格线颜色
    9. 'TickDir', 'out', 'TickLength', [.002 .002], ... % 刻度样式
    10. 'XMinorTick', 'off', 'YMinorTick', 'off', ... % 次刻度
    11. 'XColor', [.1 .1 .1], 'YColor', [.1 .1 .1],... % 坐标轴颜色
    12. 'XTick', 1:1:32,... % 刻度与范围
    13. 'XLim', [0.3 32.7],...
    14. 'XTickLabels','',...
    15. 'XTickLabelRotation',90,...
    16. 'YTick', 0:0.2:0.6,...
    17. 'YLim', [-0.03 0.7],...
    18. 'YTickLabels',{num2str([0:0.2:0.6]','%.1f')})
    19. ax = gca;
    20. ax.YAxis.MinorTickValues = [0.1 0.3 0.5];
    21. % 添加上、右框线
    22. hold on
    23. XL = get(gca,'xlim'); XR = XL(2);
    24. YL = get(gca,'ylim'); YT = YL(2);
    25. xc = get(gca,'XColor');
    26. yc = get(gca,'YColor');
    27. plot(XL,YT*ones(size(XL)),'color', xc,'linewidth',1)
    28. plot(XR*ones(size(YL)),YL,'color', yc,'linewidth',1)
    29. % 字体字号
    30. set(gca, 'FontName', 'Arial', 'FontSize', 10)
    31. set(hYLabel, 'FontName', 'Arial', 'FontSize', 10)
    32. % 背景颜色
    33. set(gcf,'Color',[1 1 1])

    最后,按照所需分辨率输出图片:

    1. figW = figureWidth;
    2. figH = figureHeight;
    3. set(figureHandle,'PaperUnits',figureUnits);
    4. set(figureHandle,'PaperPosition',[0 0 figW figH]);
    5. fileout = 'test';
    6. print(figureHandle,[fileout,'.png'],'-r300','-dpng');

    可以说还是很像的。

    大家还想看我复刻哪张图,可以告诉我号码

    以上。

    完整代码:

    Matlab复刻《Nature》单组多色柱状图

  • 相关阅读:
    家电上云后,智能家居如何构建场景化应用
    项目经理必看!4个万能公式,轻松搞定即兴发言!
    卓豪再签洛钼集团,实现AD域自动化管理有效降低管理人员工作负荷
    io模型初探
    智慧家庭解决方案-最新全套文件
    vue大型电商项目尚品汇(前台篇)day05
    Element类型【2】
    【Spring boot 全局异常捕捉】
    python基础1
    springboot集成JWT实现token权限认证
  • 原文地址:https://blog.csdn.net/qq_26447137/article/details/126181664