Matlab实验数据条形图 bar

来源

近期处理实验数据,采集一些离散点,想按自变量分组, 对数据进行分析,即绘制直方图

直方图绘制方法

histogram(X)

具体详情查matlab帮助文档

x = randn(10000,1);
h = histogram(x)

bar(y)

我看中了用 bar 函数绘制直方图,

目标,实现
在这里插入图片描述

改x坐标

实际是设置Axes属性,查帮助,设置XTickLabel

ax = gca;
ax.XTick = 1: 5;
ax.XTickLabel = {‘a’, 'b', 'c', 'd', 'e'};
ax.XTickLabelRotation = 45;

如果遇到绘制出来的 bar 图不是每个bar都有横坐标, 就先设置XTick 在更改

画带均值和方差的直方图

这个误差体现在上面每个bar上面的直线部分
使用函数barwitherr或者errorbar(官方自带)

修改bar颜色

直接设置color属性FaceColor,但是每个bar都不同颜色没试过,不清楚

其他

像这只x轴y轴标题图例等常规操作,此处不予讨论,查matlab手册即可。

我的实例

width = 10;		% 设置每段bar数据跨度
range = 160;	% 总共数据跨度
StartBarMid = -80 + 0.5 * width ;
dataX = XX;		% 实验数据赋值,为了修改数据不用后面一个一个改变量
dataY = Y;
label(1) = {[' ']};
%收据处理,实验数据存储在变量dataX和dataY中,并对dataX分段
for i = 1: range/width
    index       = find( dataX > StartBarMid-0.5*width + width*(i-1) ...
                      & dataX < StartBarMid+0.5*width + width*(i-1));
    barCenter(i)= StartBarMid+width*(i-1);
    tiltAng(i)  = mean( dataY(index) );
    variance(i) = var(dataY(index), 1);		% 方差,这里设为1是用方差定义公式(分母N),这个函数默认分母(N-1)
    Stadevi(i)  = std(dataY(index), 1);  		% 标准差
    angle2D(i)  = StartBarMid + width*(i-1);
    % 生成横坐标的内容
    label(i)    = { [ '[', num2str(StartBarMid-0.5*width + width*(i-1)), ','...
                    num2str(StartBarMid+0.5*width + width*(i-1)),  ']'] };

end

bar(barCenter, 'FaceColor', '#CDA100');			% 画直方图
errorbar(barCenter,Stadevi, 'color', 'black', 'LineStyle', 'none', 'LineWidth', 1.5); % 画误差,并将线型去掉  none
%添加数据标签
for i = 1: range/width
    text(StartBarMid  + width*(i-1), 0.3,...
        sprintf('%0.1f',tiltAng(i)),  'FontName', 'Arial', 'FontSize', 10, ...
        'LineStyle', '-','BackgroundColor', 'white', 'Margin', 1, ...
        'Rotation', 90);
end

ax = gca;
ax.XTick = 1: range/width;		
ax.XTickLabel = label;			%  设置x 坐标内容
ax.XTickLabelRotation = 45;
xlabel('Bending angle (^{o})', 'FontName', 'Arial', 'FontSize', 16)
ylabel('Tilt Angle (^{o})', 'FontName', 'Arial', 'FontSize', 16)

在这里插入图片描述

参考资料

https://openwetware.org/wiki/McClean:_Making_Nice_Bar_Plots
http://blog.sina.com.cn/s/blog_92d2c5e10102w15k.html
https://ww2.mathworks.cn/matlabcentral/answers/294200-barwitherr-position-of-errorbars
https://ww2.mathworks.cn/matlabcentral/fileexchange/30639-barwitherr-errors-varargin
https://blog.csdn.net/weixin_43196262/article/details/86165942

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值