最初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);
您正在尝试将上下文菜单分配给错误的对象。
如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