假设我有一个多重条,看起来像那样:
aa = repmat([1 2 10 5 15 3], 5,1)
aa =
1 2 10 5 15 3
1 2 10 5 15 3
1 2 10 5 15 3
1 2 10 5 15 3
1 2 10 5 15 3
bar(aa)
我需要的是在某个特定列上放置一个星形或标签,这符合某些条件。另一种选择是改变该条的颜色。
如果我能得到每列的坐标,我可以使用情节。或者也许我可以以某种方式修改错误栏? 感谢您的任何建议。
答案 0 :(得分:1)
您可以使用以下方法获取条形的x和y值(x =水平位置,y =每个条形图的高度):
hb=bar(aa);
x=cell2mat(get(hb,'Xdata'));
y=cell2mat(get(hb,'Ydata'));
然后您可以使用text来绘制文本标签, 或者甚至只用标记绘制标记符号:
plot(x,y,'*',Markersize',12)
不幸的是,如果你只有一个系列的数据,这只能正常工作,因为Xdata包含系列中的索引(1,2,3等)。对于多个系列,matlab会围绕该索引展开条形,但Xdata值都是相同的(尽管在图中,它们并未绘制在完全相同的位置)。
将选项'hist'
添加到条形图:
hb=bar(aa,'hist')
这会创建补丁而不是bareries,
x=cell2mat(get(hb,'Xdata'));
y=cell2mat(get(hb,'Ydata'));
现在包含这些补丁的(实际)角落。按如下方式提取x中心:
xcenter = 0.5*(x(2:4:end,:)+x(3:4:end,:));
使用贴片的一个上角可以获得高度:
ytop = y(2:4:end,:);
现在您可以将其用于绘图:
idx_mark = 3;
plot(xcenter(idx_mark ,:),ytop(idx_mark ,:),'*','Markersize',12)
或注释:
text(xcenter(idx_mark ,2),ytop(idx_mark ,2),'MARKED',...
'HorizontalAlignment','center', ...
'VerticalAlignment','bottom' )
答案 1 :(得分:0)
我认为你可以通过使用条形函数属性来做那些(对于颜色)。
这一切也取决于你是否了解情节的样子;如果您事先知道我认为您可以使用XTick和XTicklabel标记列。