Is it possible to add Plot Edit Toolbar functionality to a GUI?

I am creating a data visualization GUI, and I'd like to add the ability for the users to annotate the plots as they wish. The 'Plot Edit Toolbar' menu option would be perfect.
Any help would be appreciated!

 채택된 답변

Patrick Kalita
Patrick Kalita 2011년 7월 12일
Well, this is a little sneaky, but you can try this if you absolutely need to have this functionality. First, you can find the menu item with the "Plot Edit Toolbar" label and look at it's Callback property:
f = figure;
M = findall(f, 'Label', '&Plot Edit Toolbar');
get(M, 'Callback')
Now that you know what it's doing, you can call the same function that its using in your GUI.
I think we're getting into somewhat "undocumented" functionality here, so the standard warning about that (functionality could change in a future release without warning, etc.) applies here.

댓글 수: 5

Beautiful! Thank you very much!
Can you think of a way to prevent the user from being able to move contents around on the GUI figure while they are annotating?
This is nice, Patrick. Is there a way to find out the actual function (.m or .p file) for the Callback? Your code above returns the string below. I'd like to know the actual function.
ans =
viewmenufcn PloteditToolbar
@Matthew, you might want to post a new question about that.
@Fangjun, the name of the function is 'viewmenufcn'. It is being given a string input argument 'PloteditToolbar'. It is equivalent to viewmenufcn('PloteditToolbar')
The profiler can help to find the applied callback. Start the profile, hit the menu function, inspect the profiler report for the used functions.
=> plotedit(FigH, 'plotedittoolbar', 'toggle')
Thanks, Patrick. The reason I am asking is to see if there is an hidden API to use the interactive Brush functionality. Do you see a possibility? See this post. http://www.mathworks.com/matlabcentral/answers/11439-selecting-data-from-a-plot-in-a-gui

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Jan
Jan 2011년 7월 11일
The toolbar of a figure is disabled, if an UICONTROL is created. But you can enable it manually:
figure('Toolbar', 'figure');
uicontrol('Style', 'Pushbutton');
Or if you use GUIDE to create the figure, you can enable the toolbar in the CreateFcn also.

댓글 수: 6

Nice, Jan. Where did you get that?
E.g. from the PLOTEDIT function. See also : http://undocumentedmatlab.com/blog/uicontrol-side-effect-removing-figure-toolbar/
I use GUIDE to create the figure, as well as specifying which toolbar options I want to add (pan, zoom, data cursor, etc). I tried adding
set(handles.figure1,'toolbar','figure');
to the opening function, but it doesn't add the toolbar I want. I want it to add the toolbar that you get when you go to
View > Plot Edit Toolbar
from a figure that is not in a GUI (annotation tools). I don't necessarily want the users to have complete ability to edit the plots, just to be able to anotate them.
Thank you in advance!
I am trying to do something very similar let me know if you come up with a solution!
Please post the solution
Lucie S.
Lucie S. 2020년 2월 11일
편집: Lucie S. 2020년 2월 11일
This is working for me. In your guide, right click on your figure (outside the plots)--> view callbaks--> Create Fcn. Then in the function created in your .m file add the code as below:
%%%%%
function figure1_CreateFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
set(hObject ,'Toolbar','figure');
%%%%%
This sentence also works (I don't see the difference): set(hObject,'Menubar','figure');

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Interactive Control and Callbacks에 대해 자세히 알아보기

질문:

2011년 7월 11일

편집:

2020년 2월 11일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by