点击上方“阿昆的科研日常”,关注我的公众号。
添加微信:akunscience28 备注:福利
领取一份《科研绘图福利包》
之前有分享过很多《Nature》论文插图,想着为大家提供更加广阔的作图思路。
但有人说,这些图好看是好看,可惜也就大佬们能画,跟我这个小卡拉米没啥关系。
此言差矣。
如果我说,Matlab就能画呢?
比如,下面这张《Nature》插图:
用Matlab画一下图b的柱状图:
咋做到的呢?
特别提示:本期内容『数据+代码』已上传资源群中,加群的朋友请自行下载。有需要的朋友可以关注同名公号【阿昆的科研日常】后台回复关键词【全家桶】查看加群方式。
此部分主要是读取原始数据,并进行绘图前的预处理。
由于没有文章的原始数据,利用Fig2Data工具提取图中柱子顶点数据:
生成Data.txt数据文件后,绘图时仅读取其第二行,也就是y坐标。
%% 数据准备
% 读取数据
A = load('Data.txt');
% 自变量
x = 1:32;
% 因变量
dataset = A(2,:);
然后,利用TheColor工具提取配色方案:
%% 颜色提取
C = TheColor('copy');
close
首先,利用‘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');
以上。
如果你觉得我的分享对你有帮助的话,欢迎大家在这里点赞、在看、分享。当然,也欢迎大家在这里打赏。互动越多,更新越快哦~
声明:本公众号的所有原创内容,在未经允许的情况下,不得用于任何商业用途,违者必究。