MATLAB绘制水平的柱形图
水平方向的柱形图,可以更好的展现不同情景或对象之间的差异性,在论文数据绘图处理时,经常会使用到。MATLAB的barh()函数可以绘制水平的柱形图。
1。barh函数语法barh(y)barh(x,y)barh(,width)barh(,style)barh(,color)barh(,Name,Value)barh(ax,)bbarh()说明barh(y)创建一个水平条形图,每个条形对应y中一个元素。如果y是mn矩阵,则barh创建每组包含n个条形的m个组。barh(x,y)沿垂直轴在x指定的位置绘制条形。barh(,width)指定每个条形占用的可用空间比例。例如,barh(y,1)让每组中的条形紧挨在一起。将width指定为上述任一语法中的最后一个参数。barh(,style)指定条形组的样式。例如,barh(y,stacked)将每组中的条形堆叠成一个多色条形。barh(,color)为所有条形指定单一颜色。例如,barh(y,red)显示红色条形。barh(,Name,Value)使用一个或多个名称值对组参数指定条形图的属性。仅使用默认grouped或stacked样式的条形图支持设置条形属性。在所有其他输入参数之后指定名称值对组参数。barh(ax,)在目标坐标区中显示条形图。将坐标区指定为上述任一语法中的第一个参数。bbarh()返回一个或多个Bar对象。如果y是向量,则barh返回一个Bar对象。如果y是矩阵,则barh为每个序列返回一个Bar对象。显示条形图后,使用b设置条形的属性。
2。简单示例
程序clc;clearall;closeall;y〔111213141228〕;barh(y);figure;x〔198019902000〕;y〔40506352;42555048;30204440〕;barh(x,y)xlabel(Snowfall)ylabel(Year)legend({Springfield,Fairview,Bristol,Jamesville})
运行结果
3。修改中间的基准线
程度clc;clearall;closeall;figure;data1〔81533;303540;505562〕;barh(data1,BaseValue,30)显示具有负数据的堆叠条形figure;x〔198019902000〕;y〔15205;101721;10515〕;barh(x,y,stacked)自定义垂直轴刻度标签figure;y〔10203041〕;barh(y)yticklabels({April,May,June,July})
运行结果
指示条形图类别的一种方法是将X指定为分类数组。barh函数使用经过排序的类别列表,因此条形的显示顺序可能与您预期的有所不同。要保留顺序,请调用reordercats函数。将X定义为分类数组,并调用reordercats函数来指定条形的顺序。然后将Y定义为条形长度的向量,并显示条形图。
程序clc;clearall;closeallfigure;Xcategorical({Small,Medium,Large,ExtraLarge});Xreordercats(X,{Small,Medium,Large,ExtraLarge});Y〔10213352〕;barh(X,Y)
运行结果
4。指定条形宽度和颜色
程序clc;clearall;closeallfigure;y〔10223042〕;width0。4;barh(y,width,red);figure;y〔101520;303540;505562〕;bbarh(y);b(2)。FaceColor〔。2。6。5〕;b(2)。EdgeColor〔。63。08。18〕;b(2)。LineWidth2;
运行结果
5。比较不同的条形样式
程序clc;clearall;closeall;x〔198019902000〕;y〔81525;303540;505562〕;Groupedfigure;subplot(2,1,1)barh(x,y)title(GroupedStyle)Stackedsubplot(2,1,2)barh(x,y,stacked)title(StackedStyle)
运行结果
6。实际例子
程序clc;clearall;closeall;crandi(1000,8);fenzhixianshi{内存占用百分比;冗余状况;通信质量;工作负荷;卡件模块状态;IO通道状态;故障信息;总体分值};m8;数据数目n20;数据次数labelsfenzhixianshi(1:end,1);每个数据的名字rng(16,twister)数据对应的颜色colormaprandi(350,m,8)255;创建GIF文件h1figure(color,w);设置背景色set(gcf,position,〔100,100,1300,600〕);Fgetframe(gcf);捕获指定矩形区域,返回一个结构体〔A,map〕rgb2ind(frame2im(F),256);imwrite(A,map,moveimage1。gif,LoopCount,inf,DelayTime,0。001);fori1:8按行取出每次的数据tmpc(i,:);绘制条形图figbarh(tmp,0。5,EdgeColor,w,FaceColor,flat);设置每个条形的颜色fig。CDatacolormap(8,:);设置标签set(gca,yticklabel,fenzhixianshi,FontName,MicrosoftYaHeiUI,FontWeight,normal,XLim,〔0100〕,FontSize,12);xlabel(相应分值)title(示例);axis(〔0max(max(c))1。109〕)保存GIF文件Fgetframe(gcf);〔A,map〕rgb2ind(frame2im(F),256);ifi1imwrite(A,map,moveimage1。gif,WriteMode,append,DelayTime,2);elseifinimwrite(A,map,moveimage1。gif,WriteMode,append,DelayTime,5);elseimwrite(A,map,moveimage1。gif,WriteMode,append,DelayTime,2);endend
运行结果
参考内容
〔1〕https:ww2。mathworks。cnhelpmatlabrefbarh。html
作者:郭志龙
编辑:郭志龙
校对:郭志龙