如何获取条形图中条形上方居中的字符串值

时间:2018-12-12 20:53:49

标签: matlab bar-chart matlab-figure

我在以下条形图中的正确条形上方对齐文本时遇到麻烦,我无法弄清楚哪里出了错?

代码:

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

酒吧图表:

在生产后添加了箭头,并显示了箭头应与之对齐的位置。另外请注意,我懒得画所有的箭头。

This is what is happening


数据:

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 ].'

1 个答案:

答案 0 :(得分:3)

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

相反,只需将相同的datetime数组用于text的位置即可!

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

就像您在问题中所做的那样,我们希望将'VerticalAlignment'设置为'bottom',将'HorizontalAlignment'设置为'center',以使条形上方的内容更加整洁:

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

输出:

bar plot