how to print the values of each bar on top of it; multibar and subplots
    15 ビュー (過去 30 日間)
  
       古いコメントを表示
    
Hello, I'm desperately searching an easy way to print my values on my bars. At the moment I have this: https://imageshack.us/photo/my-images/59/barsm.jpg/ Sorry for the bad quality. As you perhaps can see I have characters only under every bar or additionally in or over every bar. I only want the values once per diagramm and I think the most eye appealing solution would be right on top of every bar.
Unfortunately I don't understand this code, so I don't know whats going wrong here and cant correct it.
This is the code:
    % code
% the data
     d=[
          4 8 9 7 4
          8 7 5 5 8
          2 7 1 4 9
     ];
     lab={
          'ab' 'bc' 'ef' 'ww' 'qq'
          'q' 'd' 'c' 'w' 'r'
          'w' 'i' 'yr' 'w' 'r'
     };
% the engine
     bh=bar(d);
     xd=get(bh,'children');
     xd=get([xd{:}],'xdata');
     xd=cat(2,xd{:});
     xdd=diff(xd);
     xd=sort(xd(1,:)+.5*xdd(2,1));
     set(gca,'xtick',xd);
     set(gca,'xticklabel',lab.');
     yl=get(gca,'ylim');
     set(gca,'ylim',[yl(1),yl(2)+3]);
     text(xd,repmat(11,1,numel(xd)),lab.','horizontalalignment','center');
0 件のコメント
採用された回答
  Image Analyst
      
      
 2013 年 1 月 4 日
        Replace the last line:
text(xd,repmat(11,1,numel(xd)),lab.','horizontalalignment','center');
with these two lines:
yValues = d' + 0.5;
text(xd, yValues(:),lab.','horizontalalignment','center');
0 件のコメント
その他の回答 (2 件)
  Teja Muppirala
    
 2013 年 1 月 4 日
        Would something like this work?
Data1 = [1 2 0 3 4];
Data2 = [2 3 4 5 5];
hb = bar([Data1;Data2]);
% Find the x location of each bar  
xvals = unique(cell2mat(get(findall(hb,'type','patch'),'xdata')));
xvals = mean(reshape(xvals,2,[]));
% Put the text there
text(xvals,[Data1 Data2],mat2cell([Data1 Data2]),...
    'Vert','bot','horiz','cen','FontName','Arial','Fontsize',12);
ylim([0 6])
  Hello kity
      
 2013 年 1 月 3 日
        
      編集済み: Hello kity
      
 2013 年 1 月 3 日
  
      I was doing the same, found this for you:
   x = [1 2 0 3 4];
  xname = {'Foo','Bar','','Baz','Othername'};
  bar(x)
  text(1:numel(x),x,xname,'horizontalalignment','center','verticalalignment','bottom')
in case you use more variable in one bar then do following
for example
xname = {'Data1', 'Data2'};
bar(1, Data1, 'r')
hold on
bar(2, Data2, 'g')
  text(1:2,[Data1 Data2], etc)
参考
カテゴリ
				Help Center および File Exchange で Creating, Deleting, and Querying Graphics Objects についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



