投稿问答最小化  关闭

万维书刊APP下载

Matlab论文插图绘制模板第28期—柱状图(带误差棒)

2022/5/17 15:27:24  阅读:320 发布者:

在之前的文章中,分享了Matlab柱状图的绘制模板:

折线图的绘制模板:

散点图的绘制模板:

在实际应用时,很多时候需要在以上内容基础上添加误差棒。

所以,这次来分享一下带误差棒的柱状图的绘制模板,算是给柱状图打个补丁。

或者,从另一个角度说,其实也可以叫误差棒(柱状图)的绘制模板,只不过误差棒基本不独立出现。

先来看一下成品效果:

特别提示:Matlab论文插图绘制模板系列,旨在降低大家使用Matlab进行科研绘图的门槛,只需按照模板格式添加相应内容,即可得到满足大部分期刊以及学位论文格式要求的数据插图。如果觉得有用可以分享给你的朋友。

模板中最关键的部分内容:

 

1. 数据准备

此部分主要是读取数据,定义自变量和因变量。

% 读取数据

% 自变量

x = 1:5;

% 因变量

% dataset5*3的矩阵,一行3个为一组,共5

dataset = [0.241,0.393,0.294;

          0.219,0.254,0.238;

          0.238,0.262,0.272;

          0.198,0.329,0.287;

          0.201,0.197,0.185];

% 误差矩阵

AVG = dataset/5; % 下方长度

STD = dataset/7; % 上方长度

 

2. 颜色定义

颜色搭配比较考验个人审美,需要多加尝试。

这里用之前分享的colorplus工具:

%% 颜色定义

C1 = colorplus(239);

C2 = colorplus(374);

C3 = colorplus(357);

获取方式:公众号(阿昆的科研日常)后台回复 450

 

3. 带误差棒的柱状图绘制

首先使用‘bar’命令,绘制初始柱状图,然后使用‘errorbar’命令,绘制每一根柱子的误差棒。

% 绘制初始柱状图

GO = bar(x,dataset,1,'EdgeColor','k');

% 添加误差棒

[M,N] = size(dataset);

xpos = zeros(M,N);

for i = 1:N

    xpos(:,i) = GO(1,i).XEndPoints'; % v2019b

end

hE = errorbar(xpos, dataset, AVG, STD);

值得一提的是,模板中使用的XendPoints,可以给出柱状图每根柱子顶点的横坐标,但需要2019b以上的版本。如果不是,则需要自己定义误差棒中心的位置。

4. 细节优化

为了插图的美观,首先将柱状图赋上之前选好的颜色,然后调整误差棒的属性:

% 柱状图赋色

GO(1).FaceColor = C1;

GO(2).FaceColor = C2;

GO(3).FaceColor = C3;

% 误差棒属性

set(hE, 'LineStyle', 'none', 'Color', 'k','LineWidth', 1.2)

进一步,对坐标轴参数、字体字号等进行调整:

% 坐标区调整

set(gca, 'Box', 'off', ...                                        % 边框

        'XGrid', 'off', 'YGrid', 'on', ...                        % 网格

        'TickDir', 'out', 'TickLength', [.01 .01], ...            % 刻度

        'XMinorTick', 'off', 'YMinorTick', 'off', ...             % 小刻度

        'XColor', [.1 .1 .1],  'YColor',[.1 .1 .1],...            % 坐标轴颜色

        'YTick', 0:0.1:1,...                                      % 刻度位置、间隔

        'Ylim' , [0 0.5], ...                                     % 坐标轴范围

        'Xticklabel',{'samp1' 'samp2' 'samp3' 'samp4' 'samp5'},...% X坐标轴刻度标签

        'Yticklabel',{[0:0.1:1]})                                 % Y坐标轴刻度标签

% Legend 设置  

hLegend = legend([GO(1),GO(2),GO(3)], ...

                 'A', 'B', 'C', ...

                 'Location', 'northeast');

% Legend位置微调

P = hLegend.Position;

hLegend.Position = P + [0.015 0.03 0 0];

% 字体和字号

set(gca, 'FontName', 'Helvetica')

set([hXLabel, hYLabel], 'FontName','AvantGarde')

set(gca, 'FontSize', 10)

set([hXLabel, hYLabel], 'FontSize', 11)

set(hTitle, 'FontSize', 11, 'FontWeight' ,'bold')

% 背景颜色

set(gcf,'Color',[1 1 1])

设置完毕后,按照所需分辨率、格式输出

%%

输出

figW = figureWidth;

figH = figureHeight;

set(figureHandle,'PaperUnits',figureUnits);

set(figureHandle,'PaperPosition',[0 0 figWfigH]);

fileout = 'test';

print(figureHandle,[fileout,'.png'],'-r300','-dpng');

以上。

转自:阿昆的科研日常

如有侵权,请联系本站删除!


  • 万维QQ投稿交流群    招募志愿者

    版权所有 Copyright@2009-2015豫ICP证合字09037080号

     纯自助论文投稿平台    E-mail:eshukan@163.com