Nature?拿捏了~

文摘   科技   2024-12-12 10:56   山东  

点击上方“阿昆的科研日常”,关注我的公众号。

添加微信:akunscience28    备注:福利

领取一份《科研绘图福利包


之前有分享过很多《Nature》论文插图,想着为大家提供更加广阔的作图思路。

但有人说,这些图好看是好看,可惜也就大佬们能画,跟我这个小卡拉米没啥关系。

此言差矣。

如果我说,Matlab就能画呢?

比如,下面这张《Nature》插图:

用Matlab画一下图b的柱状图:

咋做到的呢?

特别提示:本期内容『数据+代码』已上传资源群中,加群的朋友请自行下载。有需要的朋友可以关注同名公号【阿昆的科研日常】后台回复关键词【全家桶】查看加群方式


 

1. 数据准备

此部分主要是读取原始数据,并进行绘图前的预处理

由于没有文章的原始数据,利用Fig2Data工具提取图中柱子顶点数据:

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

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


2. 颜色定义

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

%% 颜色提取C = TheColor('copy');close


3. 柱状图绘制

首先,利用‘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 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', 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');

以上。

 



如果你觉得我的分享对你有帮助的话,欢迎大家在这里点赞、在看、分享。当然,也欢迎大家在这里打赏。互动越多,更新越快哦~

声明:本公众号的所有原创内容,在未经允许的情况下,不得用于任何商业用途,违者必究。


阿昆的科研日常
测绘科普,经验分享,科研日常,蜜汁脑洞
 最新文章