Matlab---绘制柱状图
Posted 烂笔头@WP
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab---绘制柱状图相关的知识,希望对你有一定的参考价值。
Matlab---绘制柱状图
目录:
- hist()函数
- histc( )函数
- bar()函数
正文:
注意区分:频率、频数分布直方图。
一、 hist()函数
hist():实现的频数直方图,"hist" is short for "Histogram(直方图、柱状图)",绘制直方图,以数值中心为分界条件。
1,N = hist(Y),将向量Y的元素平均分到十个等间隔的容器中,并且返回每个容器的元素个数,可以理解为下面中的hist(x,10)。如果Y是一个矩阵,hist指令逐列元素操作。Y为向量的情形见例1,为矩阵的情形见例3。
例1. Y为向量时,执行指令
>> Y = [1, 2, 2, 5, 6, 6, 8, 11];
>> hist(Y)
Y最大为11,最小为1,故而将区间[1,11]均分为10分,分别为[1, 2], (2,3], (3,4], (4,5], (5,6], (6,7], (7,8], (8,9], (9,10], (10,11].
例2.当Y是矩阵时的情况。执行指令:
>> Y = [1,2.5,2.1;3,3.5,6];
>> hist(Y)
注意,Y为矩阵:
1.0000 2.5000 2.1000
3.0000 3.5000 6.0000
Y有三列元素,逐列元素产生对应的直方图。得到
观察此图和矩阵Y,由于Y的元素最大为1,最小为6,故而将区间[1,6]以0.5的间隔划分为10个等长的子区间作为10个容器去容纳数据。图中有三种颜色的方条:蓝色,绿色和红色,分别对应Y中的第1,2,3列元素。如第一列元素为1和3,故而区间[1,1.5]和(2.5,3]中有蓝色方条。
2,N = hist(Y, m),M是一个标量,表明使用m个箱子。(就像上面所说的如果不指定,默认是10个箱子)。格式[a,b]=hist(x,n) :其中x是一维向量,函数功能是将x中的最小和最大值之间的区间等分n份,横坐标是x值,纵坐标是该值的个数。返回的a是落在该区间内的个数,b是该区间的中心线位置坐标。
例1.执行指令
>> Y = [1, 1, 1.3, 2.6, 3, 3.4, 5, 5.9, 6, 6,1, 7, 7,2];
>> hist(Y, 6)
3,N = hist(Y,X),X是向量,以X中的元素为区间中心可获得一系列区间,执行命令可获得Y在这些区间中的分布情况。
y=[1.1 2.2 3.3];x=[2 3 4];
[h,xout]=hist(y,x)
返回:h=[2 1 0];
xout=[2 3 4];
第一个分组是(-inf,2.5],第二个是(2.5,3.5],第三个是(3.5,inf)
参考帮助文件中hist(Y,x)的说明:
n = hist(Y, x),其中x是一个向量,返回x的长度个以x的元素为中心的容器内的,Y的分布情况。例如,如果x是一个5元素的向量,返回Y在以x-轴上x的元素为中心的,5个容器内数据直方分布。注意:如果更需要指定容器边界而不是中心,可以使用histc。
[n,xout] = hist(...) 返回包含频数和容器位置的向量n和xout。可以使bar(xout,n)绘制直方图。
那么在上例中,x长度3,以x中元素为每个容器的中心,故返回值xout==x。
二、histc( )函数
如果需要制定数值边界而不是中心,可以使用histc。
hist()函数的作用:绘制直方图,以数值中心为分界条件;
histc()函数制定数值边界为分界条件,histc(x,edges):落入edges元素之间的x值的个数。
例如1:histc以 a=[1 2 3 4 5 6 7 8 9 0 ], edges=1:2:7。
[n, bin]=histc(x, edges)
返回n=[2 2 2 1],
bin=[ 1 1 2 2 3 3 4 0 0 0]。
分析:
edges=1:2:7即总共有三个数值分界,分别为1<=x<3, 3<=x<5, 5<=x<7,
n(1)=2表示a中落在第一个范围的数总共有两个,1和2;
n(2)=2表示a中落在第二个范围的数总共有两个,3和4;
n(3)=2表示a中落在第三个范围的数总共有两个,5和6;
n(4)=1表示a中的值等于edges最后一个值7的个数为1。
bin的值为a中的值分别在edges的哪个范围中(1就是在edges的第一个空中),若不在edges范围中,则返回0。
例如2:
>> a=[1 2 3 4 5]
>> h向量:h=1:1:7
>> histc(a,h)
ans =
1 1 1 1 1 0 0
例如3:
>> a为矩阵矩阵:a=[1 2 3;4 2 6;1 5 8]
a =
1 2 3
4 2 6
1 5 8
>> h矢量不变:h=1:1:7
h =
1 2 3 4 5 6 7
>> histc(a,h)
ans =
2 0 0 分别对应于第1,2,3列中 大于等于1且小于2的矩阵元素
0 2 0 分别对应于第1,2,3列中 大于等于2且小于3的矩阵元素
0 0 1 分别对应于第1,2,3列中 大于等于3且小于4的矩阵元素
1 0 0 分别对应于第1,2,3列中 大于等于4且小于5的矩阵元素
0 1 0 分别对应于第1,2,3列中 大于等于5且小于6的矩阵元素
0 0 1 分别对应于第1,2,3列中 大于等于6且小于7的矩阵元素
0 0 0 分别对应于第1,2,3列中 大于等于7且小于8的矩阵元素
三、 bar()函数
对于bar函数的使用一般格式如下:bar(x,y) 其中x必须是严格递增的且一维向量x和一维向量y长度相同。以一维向量x的值为x坐标,对应的y为y坐标画直方图。
[n,xout] = hist(...)返回n和xout,包含有数目频率和间隔位置。可以使用bar(xout, n)来绘制直方图。
注意:[n,xout] = hist(...)格式不输出直方图,hist(...)才可以输出的直方图。
其他的,histfit(x,n)可直接给出直方图的拟合曲线,n是直方图的的区间数,x是你的数据。
目录:
- hist()函数
- histc( )函数
- bar()函数
正文:
注意区分:频率、频数分布直方图。
一、 hist()函数
hist():实现的频数直方图,"hist" is short for "Histogram(直方图、柱状图)",绘制直方图,以数值中心为分界条件。
1,N = hist(Y),将向量Y的元素平均分到十个等间隔的容器中,并且返回每个容器的元素个数,可以理解为下面中的hist(x,10)。如果Y是一个矩阵,hist指令逐列元素操作。Y为向量的情形见例1,为矩阵的情形见例3。
例1. Y为向量时,执行指令
>> Y = [1, 2, 2, 5, 6, 6, 8, 11];
>> hist(Y)
Y最大为11,最小为1,故而将区间[1,11]均分为10分,分别为[1, 2], (2,3], (3,4], (4,5], (5,6], (6,7], (7,8], (8,9], (9,10], (10,11].
例2.当Y是矩阵时的情况。执行指令:
>> Y = [1,2.5,2.1;3,3.5,6];
>> hist(Y)
注意,Y为矩阵:
1.0000 2.5000 2.1000
3.0000 3.5000 6.0000
Y有三列元素,逐列元素产生对应的直方图。得到
观察此图和矩阵Y,由于Y的元素最大为1,最小为6,故而将区间[1,6]以0.5的间隔划分为10个等长的子区间作为10个容器去容纳数据。图中有三种颜色的方条:蓝色,绿色和红色,分别对应Y中的第1,2,3列元素。如第一列元素为1和3,故而区间[1,1.5]和(2.5,3]中有蓝色方条。
2,N = hist(Y, m),M是一个标量,表明使用m个箱子。(就像上面所说的如果不指定,默认是10个箱子)。格式[a,b]=hist(x,n) :其中x是一维向量,函数功能是将x中的最小和最大值之间的区间等分n份,横坐标是x值,纵坐标是该值的个数。返回的a是落在该区间内的个数,b是该区间的中心线位置坐标。
例1.执行指令
>> Y = [1, 1, 1.3, 2.6, 3, 3.4, 5, 5.9, 6, 6,1, 7, 7,2];
>> hist(Y, 6)
3,N = hist(Y,X),X是向量,以X中的元素为区间中心可获得一系列区间,执行命令可获得Y在这些区间中的分布情况。
y=[1.1 2.2 3.3];x=[2 3 4];
[h,xout]=hist(y,x)
返回:h=[2 1 0];
xout=[2 3 4];
第一个分组是(-inf,2.5],第二个是(2.5,3.5],第三个是(3.5,inf)
参考帮助文件中hist(Y,x)的说明:
n = hist(Y, x),其中x是一个向量,返回x的长度个以x的元素为中心的容器内的,Y的分布情况。例如,如果x是一个5元素的向量,返回Y在以x-轴上x的元素为中心的,5个容器内数据直方分布。注意:如果更需要指定容器边界而不是中心,可以使用histc。
[n,xout] = hist(...) 返回包含频数和容器位置的向量n和xout。可以使bar(xout,n)绘制直方图。
那么在上例中,x长度3,以x中元素为每个容器的中心,故返回值xout==x。
二、histc( )函数
如果需要制定数值边界而不是中心,可以使用histc。
hist()函数的作用:绘制直方图,以数值中心为分界条件;
histc()函数制定数值边界为分界条件,histc(x,edges):落入edges元素之间的x值的个数。
例如1:histc以 a=[1 2 3 4 5 6 7 8 9 0 ], edges=1:2:7。
[n, bin]=histc(x, edges)
返回n=[2 2 2 1],
bin=[ 1 1 2 2 3 3 4 0 0 0]。
分析:
edges=1:2:7即总共有三个数值分界,分别为1<=x<3, 3<=x<5, 5<=x<7,
n(1)=2表示a中落在第一个范围的数总共有两个,1和2;
n(2)=2表示a中落在第二个范围的数总共有两个,3和4;
n(3)=2表示a中落在第三个范围的数总共有两个,5和6;
n(4)=1表示a中的值等于edges最后一个值7的个数为1。
bin的值为a中的值分别在edges的哪个范围中(1就是在edges的第一个空中),若不在edges范围中,则返回0。
例如2:
>> a=[1 2 3 4 5]
>> h向量:h=1:1:7
>> histc(a,h)
ans =
1 1 1 1 1 0 0
例如3:
>> a为矩阵矩阵:a=[1 2 3;4 2 6;1 5 8]
a =
1 2 3
4 2 6
1 5 8
>> h矢量不变:h=1:1:7
h =
1 2 3 4 5 6 7
>> histc(a,h)
ans =
2 0 0 分别对应于第1,2,3列中 大于等于1且小于2的矩阵元素
0 2 0 分别对应于第1,2,3列中 大于等于2且小于3的矩阵元素
0 0 1 分别对应于第1,2,3列中 大于等于3且小于4的矩阵元素
1 0 0 分别对应于第1,2,3列中 大于等于4且小于5的矩阵元素
0 1 0 分别对应于第1,2,3列中 大于等于5且小于6的矩阵元素
0 0 1 分别对应于第1,2,3列中 大于等于6且小于7的矩阵元素
0 0 0 分别对应于第1,2,3列中 大于等于7且小于8的矩阵元素
三、 bar()函数
对于bar函数的使用一般格式如下:bar(x,y) 其中x必须是严格递增的且一维向量x和一维向量y长度相同。以一维向量x的值为x坐标,对应的y为y坐标画直方图。
[n,xout] = hist(...)返回n和xout,包含有数目频率和间隔位置。可以使用bar(xout, n)来绘制直方图。
注意:[n,xout] = hist(...)格式不输出直方图,hist(...)才可以输出的直方图。
其他的,histfit(x,n)可直接给出直方图的拟合曲线,n是直方图的的区间数,x是你的数据。
以上是关于Matlab---绘制柱状图的主要内容,如果未能解决你的问题,请参考以下文章
MATLAB | 全网唯一 ,MATLAB绘制阴影柱状图(填充斜线)