필터 지우기
필터 지우기

Creating a list to select graphs on figure

조회 수: 3 (최근 30일)
Kyle Reagan
Kyle Reagan 2017년 6월 2일
답변: Gaurav Ahuja 2017년 6월 6일
I want to create a list using uicontrol('Style','listbox') where a figure will pop up and the user can choose which data appears on the graph by control clicking different functions in the list and then them all appearing on the graph unless the user deselects it. Note: I will use 'Callback' and then previous functions that were already made (e.g. sin, cos).
  댓글 수: 4
Kyle Reagan
Kyle Reagan 2017년 6월 2일
function mygraph
% Create a figure and axes
f = figure('Visible','off');
ax = axes('Units','pixels');
% Create pop-up menu
pbtn = uicontrol('Style', 'pushbutton',...
'String', {'sin(x)'},...
'Position', [400 350 75 25],...
'Callback', 'plottyy');
pcbtn = uicontrol('Style', 'pushbutton',...
'String', {'cos(x)'},...
'Position', [400 320 50 25],...
'Callback', 'plottyyc');
% Create push button
btn = uicontrol('Style', 'pushbutton', 'String', 'Clear',...
'Position', [20 20 40 20],...
'Callback', 'cla');
% Make figure visble after adding all components
f.Visible = 'on';
end For example, this will plot different functions (plottyy, plottyyc) depending on the buttons pushed on the figure.
Kyle Reagan
Kyle Reagan 2017년 6월 2일
I'm not sure why this wont work. When I choose something in the list, nothing happens.
lst = uicontrol('Style', 'listbox',...
'String', {'sin(x)','cos(x)'},...
'Max',4,'Min',1, ...
'Position', [420 360 95 50]);
ListBoxCheck = get(lst,'String');
if strcmp(ListBoxCheck,'sin(x)')
plottyy
elseif strcmp(ListBoxCheck,'cos(x)')
plottyyc
end

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

답변 (1개)

Gaurav Ahuja
Gaurav Ahuja 2017년 6월 6일
From what I could understand about the situation after reading the conversation in the comments is that you are unable to access the value selected in the listbox.
it is because ListBoxCheck is a cell array. Also, it is the same array that is entered by you in 'uicontrol' when you typed ` 'String', {'sin(x)','cos(x)'},... `. so the execution of the following command results in a '2×1 cell array'
if true
ListBoxCheck = get(lst,'String')
% command window output is as following
ListBoxCheck =
2×1 cell array
'sin(x)'
'cos(x)'
end
The Value property stores the row indexes of currently selected list box items.
if true
ListBoxCheck = get(lst,'Value')
% command window output is as following
ListBoxCheck =
1
end
To enable multiple select, you can go through the following documentation link and search for 'listbox' under section 'Specifying the Uicontrol Style'. This should be of good help to you for solving you querry.

카테고리

Help CenterFile Exchange에서 Migrate GUIDE Apps에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by