Как установить uicontextmenu для контура (MATLAB2014b) - PullRequest
0 голосов
/ 17 сентября 2018

Первоначально Я спросил , почему 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);    

1 Ответ

0 голосов
/ 17 сентября 2018

Вы пытаетесь присвоить контекстное меню не тому объекту.

Первый вывод contourf, как отмечено в документах , является "контурной матрицей", вам нужен указатель на объект:

[M,c] = contourf(___) возвращает матрицу контура и объект контура c. Используйте c для установки свойств после отображения контурного графика.

Так что просто измените свой код следующим образом:

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

Результат - рабочее контекстное меню:

context menu

Обратите внимание, что вы также дважды создавали оси, я думаю, что 2-й раз непреднамеренно при создании контекстного меню, исправьте это так:

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