MATLAB中多个图的保持功能

时间:2017-05-04 13:01:01

标签: matlab plot matlab-figure matlab-guide

我一直在尝试使用Guide创建一个MATLAB GUI:

i)具有输入参数(温度,超导间隙能量,展宽参数)并​​输出图表的函数 - 显示超导能隙的状态密度图。

注意:此功能涉及数字双重积分,因此使用滑块不能以简单的方式改变参数。为了研究不同参数的曲线变化,每次输入新参数时,函数double再次积分,并在同一轴内生成新曲线。

ii)GUI有4组输入字段,因此可以在给定时间在同一轴内绘制4条曲线进行比较。

我使用了以下代码:

handles.P1=plot(handles.dIdV,bias1,cond1,'r','linewidth',2);
%P1 = plot(handles.dIdV,bias1,cond1,'r','linewidth',2);
hold on
%plot(x,data(:,2),'b','linewidth',2)
%scatter(E,XDOS)
%xlim([min(bias) max(bias)])
%title(nem)

(请不要对评论感到困惑。' cond1'是参数set1的集成结果,这是针对数组'偏差'绘制的。因此DOS(偏差,温度,Δ-间隙值等的函数被积分到每个偏差值并存储在' cond1'中,然后根据该偏差和'偏差& #39;价值。)

要清除这一点,我写道:

% --- Executes on button press in clear1.
function clear1_Callback(hObject, eventdata, handles)
% hObject    handle to clear1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
handles.temp1=0;
handles.delta1=0;
handles.tao1=0;
handles.vmod1=0;
handles.val1=0;
hold off

即。所有参数都重置为零,保持功能关闭。

对于4条不同的曲线,已经写了4次相同的代码。 因此,当给出绘图命令时,每条曲线都有一个保持功能,当按下清除按钮时,每次曲线都有一个保持功能。应该关掉。 例如使用parameterset1生成Curve1。按下clear1按钮应该为curve1关闭hold,以便可以将新值放入parameterset1中,并且可以在与curve2,curve3和curve4相同的轴上绘制新的curve1,而不会影响其他曲线。

执行'抓住'是否存在问题。并且'推迟'我不能一次删除一条曲线并将其替换为新曲线。

当我在任何句柄中输入新参数时,所有其他图表都会消失。

我哪里可能出错? 是否可以在MATLAB中按住,在单个轴上一次更换一条曲线?

非常感谢。

1 个答案:

答案 0 :(得分:0)

这就是hold应该如何工作的。如果要覆盖单个项目,只需重新分配每个绘图对象所包含的数据。例如,如果要替换handles.temp1对象的数据,它将如下所示:

set(handles.temp1, 'XData', (New xdata), 'YData', (new ydata))
%You might need a drawnow() here but not sure.

您还可以使用set()完全相同的方式更新其他线对象属性。

另外,请注意hold永远不会关闭,否则下一个绘图项将覆盖其他所有内容。

编辑:我还想指出,设置handles.temp1 = 0不是您想要做的。请注意,线对象具有"属性",这正是您尝试操作的内容。有关行属性,请参阅this。如果您对对象和OOP一无所知,请参阅this