【问题标题】:How to set uicontextmenu for contourf (MATLAB2014b)如何为轮廓设置 uicontextmenu (MATLAB2014b)
【发布时间】:2019-02-21 04:08:13
【问题描述】:

最初I asked 为什么 pcolor 和 contourf 不适用于这种方法,我认为它们是同一个问题的症状。这不是真的,因此是新问题。

为什么这不适用于contourf? (以及如何让它工作?)

axes; 
stuff = uicontextmenu('Parent',ancestor(axes,'figure')); 
stuffm = uimenu('Parent',stuff,'Label','Change something'); 
x = randn(10); 
h = contourf(x);
% pcolor works! contourf does not
%h = pcolor(x) 
set(h,'uicontextmenu',stuff);    

【问题讨论】:

    标签: matlab user-interface matlab-figure


    【解决方案1】:

    您正在尝试将上下文菜单分配给错误的对象。

    contourf 的第一个输出,如docs 中所述,是“轮廓矩阵”,您想要对象的句柄:

    [M,c] = contourf(___) 返回轮廓矩阵和轮廓对象c等高线图显示后使用c设置属性。

    所以只需按如下方式更改您的代码:

    [~,h] = contourf(x); % 2nd output is the object handle
    set(h,'uicontextmenu',stuff);
    

    结果是一个工作上下文菜单:

    请注意,您还创建了两次轴,我认为第二次创建上下文菜单时是无意的,请像这样修复:

    ax = axes; % assign new axes to variable for later use
    stuff = uicontextmenu('Parent',ancestor(ax,'figure')); % use ax, not new axes
    

    【讨论】:

    • 谢谢!完美运行! MATLAB 不是我的主要语言,但我正在研究它一段时间。双轴问题是我在从更大的代码中抽象问题时犯的一个错误。
    • @jgd10 别担心,一些不太常见的情节有这样的怪癖,pie 更糟糕(但饼图也是如此!)。
    • 我认为没有充分的理由使用饼图...除非您出于某种原因想要制作 pac-man
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 2018-11-04
    • 2015-07-30
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    相关资源
    最近更新 更多