昨天给大家分享了我博士期间搜集的《Nature》高清论文插图集(涵盖了超过1200张各式各样的论文插图),意外的反响还不错。
于是决定借此机会,以《Nature》高清论文插图集和《Matlab论文插图绘制模板系列》为基础,开启一个全新的系列,暂时称之为:
《Nature论文插图复刻系列》
顾名思义,就是我会从《Nature》高清论文插图集中挑选一些好看的插图,结合手头的各种软件(比如Matlab、PPT等)、插件(比如ColorCopy、OneKey等),尽量实现1:1复刻。
本期我们来复刻《Nature》高清论文插图集Part2中的第456号插图(以下简称456)的左下的多组柱状图。
先来看一下复刻效果:
大家还想看我复刻哪张图,可以告诉我号码。
特别提示:Nature论文插图复刻系列,旨在降低科研绘图的门槛,让大家不再觉得“顶级期刊里的论文插图对自己来说遥不可及”。如果觉得有用,不妨分享给你身边的人。
之前有分享过Matlab柱状图的绘制模板:
与之相比,456的三个柱子之间有一定的间隔。
此外,456的文字注释为横排数字,Legend图例为小正方形,Y坐标轴的刻度标签保留了两位小数。
这些都是需要注意的点。
Matlab R2020a
Matlab科研绘图插件-ColorCopy配色方案提取工具
此部分主要是提取456中的数据以及配色方案,以用于绘图。
由于原图作者对每根柱子的值进行了注释,所以此处直接手动构建数据矩阵。
%% 数据准备
x = [1 3];
dataset = [15 24.37 31.2;
11 23.97 36.4];
然后,利用ColorCopy工具提取配色方案。
%% 颜色提取
C = ColorCopy;
close
C1 = C(1,:);
C2 = C(2,:);
C3 = C(3,:);
首先,利用‘bar’命令绘制初始的多组柱状图。
GO = bar(x,dataset,0.8,'EdgeColor','k');
hYLabel = ylabel('100 seed weight(100SW,
g)');
然后,赋上之前提取的配色方案,并对每根柱子添加文字注释。
% 赋色
GO(1).FaceColor = C1;
GO(2).FaceColor = C2;
GO(3).FaceColor = C3;
% 文字注释
for ii = 1
text(ii-0.45,dataset(ii,1)+2,num2str(dataset(ii,1),'%.2f'),...
'ROtation',0,'color','k','FontSize',8,'FontName', 'Helvetica', 'HorizontalAlignment','center');
text(ii,dataset(ii,2)+2,num2str(dataset(ii,2)),...
'ROtation',0,'color','k','FontSize',8,'FontName', 'Helvetica', 'HorizontalAlignment','center');
text(ii+0.45,dataset(ii,3)+2,num2str(dataset(ii,3)),...
'ROtation',0,'color','k','FontSize',8,'FontName', 'Helvetica', 'HorizontalAlignment','center');
end
for ii = 3
text(ii-0.45,dataset(ii-1,1)+2,num2str(dataset(ii-1,1)),...
'ROtation',0,'color','k','FontSize',8,'FontName', 'Helvetica', 'HorizontalAlignment','center');
text(ii,dataset(ii-1,2)+2,num2str(dataset(ii-1,2)),...
'ROtation',0,'color','k','FontSize',8,'FontName', 'Helvetica', 'HorizontalAlignment','center');
text(ii+0.45,dataset(ii-1,3)+2,num2str(dataset(ii-1,3)),...
'ROtation',0,'color','k','FontSize',8,'FontName', 'Helvetica', 'HorizontalAlignment','center');
end
再然后,对照原图,对坐标区细节进行进一步的调整:
% 坐标轴参数调整
set(gca, 'Box', 'off', ...
'XGrid', 'off', 'YGrid', 'off', ...
'TickDir', 'out', 'TickLength', [.005 .005], ...
'XMinorTick', 'off', 'YMinorTick', 'off', ...
'XColor', [0 0 0], 'YColor', [0 0 0 ],...
'YTick', 0:5:40,...
'Ylim' , [0 40], ...
'Xlim' , [0 4], ...
'Xtick', [0:4], ...
'Xticklabel',{' ', 'Pantancheru (2014-15)',' ','Pantancheru (2015-16)',' ' },...
'Yticklabel',{num2str([0:5:40]','%.2f')})
% legend
hLegend = legend([GO(1),GO(2),GO(3)], ...
'RP1 (2 individuals)', 'RP2 (15 individuals)', 'RP3 (5 individuals)', ...
'Location', 'northoutside','Orientation','horizontal');
hLegend.ItemTokenSize = [5 5];
legend('boxoff');
% 字体字号
set(gca, 'FontName', 'Arial', 'FontSize', 10)
set(hLegend, 'FontName', 'Arial', 'FontSize', 10)
set(hYLabel, 'FontName', 'Arial', 'FontSize', 11)
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');
可以说还原度还是比较高的。
大家还想看我复刻哪张图,可以告诉我号码。
以上。
所用工具及完整代码获取方式