首页 > 解决方案 > 如何在条形图中的条形上方居中获取字符串值

问题描述

我无法在以下条形图中将文本对齐到正确条形上方,我不知道哪里出了问题?

代码:

bar(two_weeks,zAxis);
text(1:length(two_weeks),zAxis,num2str(zAxis),'vert','bottom','horiz','center');
box off
ylabel('Z Axis')

条形图:

箭头是在后期制作中添加的,并显示了它们应该对齐的位置。另请注意,我懒得画所有的箭头。

这就是正在发生的事情


数据:

two_weeks = 
 1×14 datetime array
 [ 21-Nov-2018, 22-Nov-2018, 23-Nov-2018, 24-Nov-2018, 25-Nov-2018, 26-Nov-2018, 27-Nov-2018, ...
   28-Nov-2018, 29-Nov-2018, 30-Nov-2018, 01-Dec-2018, 02-Dec-2018, 03-Dec-2018, 04-Dec-2018 ]

zAxis = 
 [ 5, 12, 1, 7, 13, 24, 2, 27, 62, 0, 3, 17, 74, 4 ].'

标签: matlabbar-chartmatlab-figure

解决方案


您的 x 轴是使用datetime数组指定的。然后,您使用的是猜测来为您的项目1:length(two_weeks)的 x 坐标对齐索引 ( ) 。text

相反,只需对!datetime的位置使用相同的数组即可。text

bar( two_weeks, zAxis );
text( two_weeks, zAxis, arrayfun(@num2str,zAxis,'uni',0) );

正如您在问题中所做的那样,我们想要设置'VerticalAlignment'to'bottom''HorizontalAlignment'to'center'来整理栏杆上方的东西:

bar( two_weeks, zAxis );
text( two_weeks, zAxis, arrayfun(@num2str,zAxis,'uni',0), ...
      'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'center' );

输出:

条形图


推荐阅读