利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:
小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂

Matlab 复制代码
clear;  close all;
x = 1:3;
aa=[28.6321521955954	26.2453660695847	21.6910234851208
6.93747104431360	6.25442246899816	3.34283595856424
5.51365061796319	4.87774309343424	2.70568333347838
4.59777539782697	4.28903471314861	3.16193666075181
4.55663777155947	4.34610811189430	3.46868724869320
5.45340325106840	5.31864869437005	4.56672763360090
6.38233972914207	6.26223624990860	5.33221716201704
10.3353397360388	10.1738872649333	8.27222029782058
12.7886167071045	12.5588690627220	10.1366328711644
5.35383334634117	4.61859457908258	2.89963920102506];
 
b=bar(x,aa,'FaceColor','flat');  %%bar函数的自动编码颜色只有七种类型,故下面需要人为多提供三钟颜色
b(8).FaceColor =[0 1 0];b(9).FaceColor=[1 0 0];
b(10).FaceColor=[0 0 0];

ylabel('RMSE (cm)');
set(gca,'FontName','Times New Roman','FontSize',15);
xticklabels({'Amazon', 'Sao Francisco', 'Mississippi'});

grid on;
%% 添加数值标注
tt=10;  %%设置标注的数字大小
for i = 1:numel(x)
    text(x(i)-0.35, aa(1,i), sprintf('%.2f',aa(1,i)), 'HorizontalAlignment', 'center', 'VerticalAlignment', 'bottom',"FontSize",tt)
    text(x(i)-0.25, aa(2,i), sprintf('%.2f',aa(2,i)), 'HorizontalAlignment', 'center', 'VerticalAlignment', 'bottom',"FontSize",tt)
    text(x(i)-0.18, aa(3,i), sprintf('%.2f',aa(3,i)), 'HorizontalAlignment', 'center', 'VerticalAlignment', 'bottom',"FontSize",tt)
    text(x(i)-0.1, aa(4,i), sprintf('%.2f',aa(4,i)), 'HorizontalAlignment', 'center', 'VerticalAlignment', 'bottom',"FontSize",tt)
    text(x(i)-0.02, aa(5,i), sprintf('%.2f',aa(5,i)), 'HorizontalAlignment', 'center', 'VerticalAlignment', 'bottom',"FontSize",tt)
    text(x(i)+0.05, aa(6,i), sprintf('%.2f',aa(6,i)), 'HorizontalAlignment', 'center', 'VerticalAlignment', 'bottom',"FontSize",tt)
    text(x(i)+0.15, aa(7,i), sprintf('%.2f',aa(7,i)), 'HorizontalAlignment', 'center', 'VerticalAlignment', 'bottom',"FontSize",tt)
    text(x(i)+0.25, aa(8,i), sprintf('%.2f',aa(8,i)), 'HorizontalAlignment', 'center', 'VerticalAlignment', 'bottom',"FontSize",tt)
    text(x(i)+0.35, aa(9,i), sprintf('%.2f',aa(9,i)), 'HorizontalAlignment', 'center', 'VerticalAlignment', 'bottom',"FontSize",tt)
    text(x(i)+0.4, aa(10,i), sprintf('%.2f',aa(10,i)), 'HorizontalAlignment', 'center', 'VerticalAlignment', 'bottom',"FontSize",tt)
end
legend('1','2', '3', '4', '5', '6','7','8','9','10');

欢迎评论区或者私信交流,多多点赞多多支持,谢谢!

相关推荐
圆头猫爹13 分钟前
第34次CCF-CSP认证第4题,货物调度
c++·算法·动态规划
秋说16 分钟前
【PTA数据结构 | C语言版】出栈序列的合法性
c语言·数据结构·算法
用户403159863966330 分钟前
多窗口事件分发系统
java·算法
用户403159863966333 分钟前
ARP 缓存与报文转发模拟
java·算法
smppbzyc1 小时前
2025年亚太杯(中文赛项)数学建模B题【疾病的预测与大数据分析】原创论文讲解(含完整python代码)
python·数学建模·数据分析·数学建模竞赛·亚太杯数学建模·亚太杯
hi0_61 小时前
03 数组 VS 链表
java·数据结构·c++·笔记·算法·链表
aPurpleBerry1 小时前
hot100 hot75 栈、队列题目思路
javascript·算法
卷福同学2 小时前
【AI编程】AI+高德MCP不到10分钟搞定上海三日游
人工智能·算法·程序员
mit6.8242 小时前
[Leetcode] 预处理 | 多叉树bfs | 格雷编码 | static_cast | 矩阵对角线
算法
皮卡蛋炒饭.3 小时前
数据结构—排序
数据结构·算法·排序算法