Creating a list to select graphs on figure

2 vues (au cours des 30 derniers jours)
Kyle Reagan
Kyle Reagan le 2 Juin 2017
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 commentaires
Kyle Reagan
Kyle Reagan le 2 Juin 2017
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 le 2 Juin 2017
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

Connectez-vous pour commenter.

Réponses (1)

Gaurav Ahuja
Gaurav Ahuja le 6 Juin 2017
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.

Catégories

En savoir plus sur Migrate GUIDE Apps dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by