How to determine the x-axis positions of the bars in a grouped bar chart
38 次查看(过去 30 天)
显示 更早的评论
Suppose I make the following bar chart:
figure; bar([1 2],[3 4; 5 6])
How can I programatically find the x-axis locations of each of the bars? I don't want x = [1 2]. I want the actual locations of the blue and yellow bars.
0 个评论
采纳的回答
Allison
2015-6-3
the cyclist-
I ran into this same problem when switching from Matlab 2011b to 2015b, with the updated graphics engine. After fooling around for a bit, I found that the following code will work (adapted from your original post):
%
mean_velocity = [5 6 7; 8 9 10]; % mean velocity
std_velocity = randn(2,3); % standard deviation of velocity
figure
hold on
hb = bar(1:3,mean_velocity');
% For each set of bars, find the centers of the bars, and write error bars
pause(0.1); %pause allows the figure to be created
for ib = 1:numel(hb)
%XData property is the tick labels/group centers; XOffset is the offset
%of each distinct group
xData = hb(ib).XData+hb(ib).XOffset;
errorbar(xData,mean_velocity(ib,:),std_velocity(ib,:),'k.')
end
I'm not quite sure why the pause is required- it seems that the new graphics engine requires a little bit of time before it will recognize the figure handle properly. I've tried it in other scripts where there is more code in between the plotting and the additional math and it seems to work fine, as well as trying it just via command line, and found the same issue. This should work in any version r2014b+.
6 个评论
Alex Wooten
2021-3-16
+1 for comment about pause. I had plotting code giving me different results when running line-by-line vs all at once, that explains it!
更多回答(3 个)
Shivkumar Vishnempet Shridhar
2022-1-12
There is a far simpler solution to this. Just split this into 2 bar plots. I've set the bar width as 0.2, so any x axis position you set, the bar should occupy x-width/2 to x+width/2
figure; bar([0.8 1.8],[3 4],0.2,'FaceColor',[0, 0.4470, 0.7410],'LineWidth',3)
hold on
bar([1.2 2.2],[5 6],0.2,'FaceColor',[0.9290, 0.6940, 0.1250],'LineWidth',3)
2 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Bar Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!