使用MATLAB图中的数据工具将XTickLabel显示为坐标

时间:2013-03-14 09:57:20

标签: matlab matlab-figure

我需要在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。我不打算默认在条形图的顶部显示标签。

1 个答案:

答案 0 :(得分:2)

进入数据光标模式并选择一个条。

现在右键单击数据点,然后从菜单中选择“编辑文本更新功能...”。

enter image description here

按如下方式修改功能:

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,您应该是金色的:

enter image description here

如果您想以编程方式执行此操作,则需要获取相关数字的数据游标管理器。这样的事情应该有效:

>> bar([1,2,3])
>> dcm = datacursormode(gcf);
>> set(dcm, 'UpdateFcn', @(a,b) {'Hello', 'World'})

其中set的第三个参数是您要用于设置文本的函数的句柄(例如,如果您将上一个函数保存为@myfunction,则可以使用myfunction.m) 。这给你这样的东西:

enter image description here