《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坐标

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

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

%% 颜色提取
C = ColorCopy;
close

4 绘图

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

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

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

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

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

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

% 坐标轴参数调整
set(gca, 'LineWidth', 1,...                                        % 线宽
         'Box', 'off', ...                                         % 边框
         'XGrid', 'on', 'YGrid', 'on', ...                         % 网格线
         'GridColor',[0.8 0.8 0.8],...                             % 网格线颜色
         'YMinorGrid','on',...                                     % 次网格线
         'MinorGridLineStyle','-',...                              % 次网格线样式
         'MinorGridColor',[0.8 0.8 0.8],...                        % 次网格线颜色
         'TickDir', 'out', 'TickLength', [.002 .002], ...          % 刻度样式
         'XMinorTick', 'off', 'YMinorTick', 'off', ...             % 次刻度
         'XColor', [.1 .1 .1],  'YColor', [.1 .1 .1],...           % 坐标轴颜色
         'XTick', 1:1:32,...                                       % 刻度与范围
         'XLim', [0.3 32.7],...
         'XTickLabels','',...
         'XTickLabelRotation',90,...
         'YTick', 0:0.2:0.6,...
         'YLim', [-0.03 0.7],...
         'YTickLabels',{num2str([0:0.2:0.6]','%.1f')})
ax = gca;
ax.YAxis.MinorTickValues = [0.1 0.3 0.5];
% 添加上、右框线
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', 10)
set(hYLabel, 'FontName',  'Arial', 'FontSize', 10)
% 背景颜色
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');

可以说还是很像的。

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

以上。

完整代码:

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

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值