【问题标题】:Use data tool in MATLAB figures to show XTickLabel as coordinates使用 MATLAB 图形中的数据工具将 XTickLabel 显示为坐标
【发布时间】:2013-03-14 09:57:19
【问题描述】:

我需要在 MATLAB 中显示一个条形图,其中XTicks 将由标签单元格数组标记。截至目前,我在图底部沿 x 轴显示XTickLabels,但由于图中有大量条形图,我想使用数据工具,以便当我选择特定条形图时,对应的XTickLabel 应该显示为它的X 坐标而不是它的数字索引。

一个简单的例子是:

x=[1 2 3];
xd={'a','b','c'};
bar(x);
set(gca,'ylim',[0,5],'xticklabel',xd);

我想要的地方

X = a
Y = 1

在结果图中选择第一个条时显示。

我们将不胜感激!

附:默认情况下,我不希望在条形顶部显示标签。

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

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

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

    修改函数如下:

    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.m,则可以使用 @myfunction)。这给了你这样的东西:

    【讨论】:

    • 它不仅运行良好,而且我还学到了一些新东西。万分感谢! :)
    • 很抱歉,我的代码本身可以选择文本更新功能吗?
    • 再次感谢!你是救生员。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多