在MATLAB R2014b中对线图进行改进时绘制一个圆

时间:2014-11-05 10:32:07

标签: matlab user-interface plot matlab-guide

假设我的GUI(使用GUIDE设计)自动升级如下图:

enter image description here

我希望在改进步骤中有圈子或类似的东西:

enter image description here

我们如何在MATLAB R2014b中完成这项工作?

PS。

我使用这样的代码来更新GUI中的图:

plot(handles.plot,Value); %%(In a loop)

Value正在循环更新。

3 个答案:

答案 0 :(得分:1)

如果您想在每个数据点上设置一个圆圈,请执行以下操作:

h = plot(handles.plot,Value,'.-');
set(h,'MarkerSize',20,'MarkerEdgeColor',[0 0 0]);

第二行将设置点的大小和颜色,试验给它们你想要的大小。

如果您想在某些特定数据点上绘制点,请执行以下操作:

plot(handles.plot,Value);
hold on
h = plot(specific_X,specific_Y,'.');
set(h,'MarkerSize',20,'MarkerEdgeColor',[0 0 0]);

其中specific_X和specific_Y是带有要绘制点的数据点的x和y的向量。

答案 1 :(得分:1)

@R。如果你已经知道所希望的观点,Schifini写了一个很好的答案。如果您想要自动,这个答案会很好:

我明白你会迭代地在循环内的数据中添加数据(但实际上你似乎只是在上一个情节中运行......)。如果是这样,你可以这样写:

plot(handles.plot,Value); %%(In a loop)
if (Value(end)-Value(end-1))~=(Value(end-1)-Value(end-2))  %% if the slope is changing
  hold on; plot(handles.plot(end-1),Value(end-1), 'ko','Markersize',15);
end

答案 2 :(得分:1)

您可以执行以下操作来检测功能“改进”的点,即衍生物发生变化时的点,并绘制相应位置的点:

clear
close all
clc


%// Generate dummy data
t = 1:10;
y = zeros(size(t));

idx1 = 0 <= t & t <= 2;
y(idx1) = 2*t(idx1);

idx2 = 2 < t & t < 3;
y(idx2) = t(idx2);

idx3 = 3 <= t & t <= 5;
y(idx3) = 4;

idx4 = 5 <= t & t <= 8;
y(idx4) = 2*t(idx4);

idx5 = 8 <= t & t <= 10;
y(idx5) = 8;
%======

%// Get indices corrsponding to change in curve
CircleIndices = t(diff(diff(y)) ~= 0) +1

%// Get y-coordinates
yC = y(CircleIndices)

%// plot the curve + the circles
plot(t,y,'r')
hold on
scatter(CircleIndices,yC,40,'k','filled')
hold off

看起来像这样:

enter image description here

在你的循环/回调中很容易实现。希望有所帮助!