我需要在MATLAB中显示一个条形图,其中XTick
将被标签的单元格数组标记。截至目前,我在图的底部沿x轴显示XTickLabel
s,但由于图中有大量条形,我想使用数据工具,这样当我选择一个特定的相应的XTickLabel
应显示为X
坐标,而不是数字索引。
一个简单的例子是:
x=[1 2 3];
xd={'a','b','c'};
bar(x);
set(gca,'ylim',[0,5],'xticklabel',xd);
我想要的地方
X = a
Y = 1
在结果图中选择第一个条形时显示。
非常感谢帮助!
P.S。我不打算默认在条形图的顶部显示标签。
答案 0 :(得分:2)
进入数据光标模式并选择一个条。
现在右键单击数据点,然后从菜单中选择“编辑文本更新功能...”。
按如下方式修改功能:
function output_txt = myfunction(obj,event_obj)
pos = get(event_obj, 'Position');
lab = get(gca, 'XTickLabel');
if isa(lab,'double')
lab = arrayfun(@(x){num2str(x)},lab);
end
output_txt = {['X: ', lab{pos(1)}], ['Y: ', num2str(pos(2),4)]};
end
首先,这会得到一组xticklabels并将它们存储在lab
。
然后检查它们实际上是双倍的,而不是字符串的单元格数组,并在必要时转换它们。
最后,它会显示正确标签的文字。
将回调保存为myfunction.m
,您应该是金色的:
如果您想以编程方式执行此操作,则需要获取相关数字的数据游标管理器。这样的事情应该有效:
>> bar([1,2,3])
>> dcm = datacursormode(gcf);
>> set(dcm, 'UpdateFcn', @(a,b) {'Hello', 'World'})
其中set
的第三个参数是您要用于设置文本的函数的句柄(例如,如果您将上一个函数保存为@myfunction
,则可以使用myfunction.m
) 。这给你这样的东西: