(更新 - 新发行) - Matlab - 在GUIDE GUI问题中显示条形图

时间:2014-12-16 16:19:19

标签: matlab user-interface graph matlab-guide

这是我想在GUIDE GUI上显示的条形图。我将此代码放入GUIDE GUI的OpeningFcn函数中,实际发生的是,专用于图形的实际框部分(标记为" axes1")出现在GUI窗口中,但随后出现在另一个图形窗口中出现显示条形图。如何将此条形图放入专用于方框轴1的空间中的GUIDE GUI?

我不需要任何按钮触发器来显示它。当GUI窗口打开时,图形应出现在GUIDE GUI上的专用位置。

编辑:这是我想要显示的图表数据。我使用前一个作为例子,所以我可以从中学习。但是,出于某种原因,下面的图形在窗口中出现两次存在问题 - 它出现一次,关闭,然后再次出现。我该如何解决它只出现一次?所有这些都在OpeningFcn下,我在CreateFcn下没有其他代码。

dbedit = matfile('varDatabase.mat', 'Writable', true);
results_pData = dbedit.pData;
results_uData = dbedit.uData;
results_name = dbedit.name;

% Create data for each set of bars for data from each group 
% i.e. [participant, population].
% Population is defined as the previous user data stored in its full in uData. 
expSingle = [((results_pData(1,2)/7)*100), ((mean(results_uData(:,2))/7)*100)];
expConjugate = [((results_pData(1,3)/7)*100), ((mean(results_uData(:,3))/7)*100)];
ctlSingle = [((results_pData(1,4)/7)*100), ((mean(results_uData(:,4))/7)*100)];
ctlConjugate = [((results_pData(1,5)/7)*100), ((mean(results_uData(:,5))/7)*100)];

% Create a vertical bar chart using the bar function
bar(handles.axes1,1:2, [expSingle' expConjugate' ctlSingle' ctlConjugate'], 1)

% Set the axis limits
axis([0 2.8 0 100])
set(gca,'XTickLabel',{results_name,'Population'})

% Add title and axis labels
title('Proportion of Responses for Conjunctive vs. Single Choices')
xlabel('Entity')
ylabel('Proportion of Responses (%)')

% Add a legend
legend('Single Choice, Experimental', 'Conjugative Choice, Experimental',...
'Single Choice, Control', 'Conjugative Choice, Control')

输入将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是因为您在创建数据后立即调用了数字,这确实会在GUI之外创建一个新数字。

要解决您的问题,请删除该行,并考虑在调用bar时添加实际的轴句柄:

bar(handles.axes1,1:12, [measles' mumps' chickenPox'], 1)

因此,您的整个代码可能如下所示:

%Create data for childhood disease cases
measles = [38556 24472 14556 18060 19549 8122 28541 7880 3283 4135 7953 1884];
mumps = [20178 23536 34561 37395 36072 32237 18597 9408 6005 6268 8963 13882];
chickenPox = [37140 32169 37533 39103 33244 23269 16737 5411 3435 6052 12825 23332];

%Create a vertical bar chart using the bar function 

%// Remove the call to figure.
bar(handles.axes1,1:12, [measles' mumps' chickenPox'], 1)

% Set the axis limits
axis([0 13 0 40000])
set(gca, 'XTick', 1:12)

% Add title and axis labels
title('Childhood diseases by month')
xlabel('Month')
ylabel('Cases (in thousands)')

% Add a legend

legend('Measles', 'Mumps', 'Chicken pox')

现在应该可以使用