MATLAB 画柱状图:更改横轴显示内容,调整横轴显示角度,纵轴加百分号%,调整纵轴显示范围,柱状图顶添加数字

以下程序为根据画图需要,查阅各种资料汇总的结果,为日后查询和交流,总结如下。
四部分加到一起,为完整程序。
内容有详细注释,参照程序,修改参数,可得自己想要的效果。

如有不详尽之处,如增大字号语句的解析,查看:https://blog.csdn.net/wmz13248/article/details/106288206

步骤1:

data1=[74.95;90.21;91.53;90.39];   % 数据本来是74.95%,但是MATLAB的百分号是注释符,所以百分号 % 要在后面加上
data2=[33.47;10.82;13.57;2.39];

data=[data1 data2];  	% 因为要画两组数据的柱状图,所以并起来
bar(data); 				% 画柱状图

MATLAB 画柱状图:更改横轴显示内容,调整横轴显示角度,纵轴加百分号%,调整纵轴显示范围,柱状图顶添加数字_第1张图片
步骤2:

for i=1:length(data1)
    num=num2str(data1(i));
    num1=[num,'%'];			% 转换成字符串的74.95和百分号合并,形成字符串的74.95%
    text(i,data1(i)+0.5,num1,'VerticalAlignment','bottom','HorizontalAlignment','right','FontSize',15);
    //% data1(i)+0.5,数字显示的位置在data1(i)上+0.5的位置
    //% right,和下面data2(i)中的left,是显示的数字相对于两个柱的中间位置的偏移,可以自己改变一下试试看效果
    //% 字号设置为15
end
for i=1:length(data2)
    num=num2str(data2(i));
    num1=[num,'%'];
    text(i,data2(i)+0.5,num1,'VerticalAlignment','bottom','HorizontalAlignment','left','FontSize',15);
end

MATLAB 画柱状图:更改横轴显示内容,调整横轴显示角度,纵轴加百分号%,调整纵轴显示范围,柱状图顶添加数字_第2张图片
步骤3

x_name={'Detection algorithm based on reference [4]',...
    'Detection algorithm based on reference  [14]',...
    'Detection algorithm based on reference  [28]',...
    'Detection algorithm of this paper'}; 			% 新的横坐标要显示的值

xt = get(gca,'XTick');	% 获取横坐标轴刻度句柄		% xt为[1 2 3 4]
yt = get(gca,'YTick');	% 获取纵坐标轴刻度句柄 	% yt为[0~100]的间隔为1011个值,[0 10 20 30 40 50 60 70 80 90 100]
yt=[yt,110];			% 考虑后面legend图标会挡住柱状图上的数字,所以将纵轴加长一个格,到110
xtextp=xt;                    
ytextp=-0.2*yt(3)*ones(1,length(xt));			% -0.2 为柱状图上的数字距离柱状图顶的距离,可调
text(xtextp,ytextp,x_name,'HorizontalAlignment','left','rotation',-5,'FontSize',15)  % rotation 旋转角度设置为-5,可使横坐标值斜着-5度的角度显示
//% 设置显示标签的位置,写法不唯一,这里其实是在为每个标签找放置位置的纵坐标
//% rotation,正的旋转角度代表逆时针旋转,旋转轴可以由HorizontalAlignment属性来设定,
//% 有3个属性值:left,right,center,这里可以改这三个值,以及rotation后的角度,这里写的是-5
//% 不同的角度对应不同的旋转位置了,依自己的需求而定了。

set(gca,'XTickLabel',[]);  % 将原坐标(1,2,3,..)去掉,可以试一下,就看出效果了

MATLAB 画柱状图:更改横轴显示内容,调整横轴显示角度,纵轴加百分号%,调整纵轴显示范围,柱状图顶添加数字_第3张图片
步骤4

uu=yt;
ii=length(uu);
aa=uu';
for kk=1:ii
    b(kk)='%';	
end
bb=b';
cc=[num2str(aa),bb]; 			% 转换成字符串后,在纵轴的0~110的每个数字后面都加上百分号 %

%设置y轴范围和刻度
set(gca,'YLim',[0 110]);		% 设置Y轴的数据显示范围,把显示范围扩大到110%,这样legend图标不会挡住最右侧蓝色柱状图上的数字
set(gca,'YTick',[0:10:100]);	% 设置Y轴要显示坐标刻度,最大到100%,因为110%不那么对劲,所以直接不显示它
set(gca,'YTickLabel',cc,'FontSize',15);	 	% 调整纵轴 0%~100% 的显示字号为15
legend('Rate1','Rate2')			% 图标

MATLAB 画柱状图:更改横轴显示内容,调整横轴显示角度,纵轴加百分号%,调整纵轴显示范围,柱状图顶添加数字_第4张图片

你可能感兴趣的:(MATLAB 画柱状图:更改横轴显示内容,调整横轴显示角度,纵轴加百分号%,调整纵轴显示范围,柱状图顶添加数字)