2016-11-23 24 views
2

我想要绘制函数中的循环使用viscircles,然后回来这个函数以后绘制像图中另一个圈子如下图所示:如何合并多个viscircles的结果在MATLAB

Multiple circles

此刻,我只能绘制使用这些代码行单圈:

figure 
center = [numberX numberY]; 
xlim([-0.1 10.1]) 
ylim([-0.1 10.1]) 
axis square 
artwork = viscircles(center,size,'Color',colorControl) 

在绘制第一viscircles,控制回滚到提示后函数来获取数据的下一viscircles,但是当它回到绘图时,即使我尝试使用hold on,原始viscircles也会被覆盖。任何意见将不胜感激。

+0

您可以编辑了问题补充代码的更多行?这可以帮助别人提出一些建议。 – nahomyaja

+0

谢谢rayryeng!该代码非常适合添加新的圈子。我知道我没有在问题中说得很清楚,但我实际上是想要绘制多种颜色的圆圈。使用你的代码,每当添加一个新的圆时,所有的圆都变成新的颜色。有没有解决的办法?我试着复制你用于中心和大小变量的格式,但是Matlab对此并不太高兴。 –

+0

@LouisRichard我很快会修改我的帖子。我现在不在家。很高兴代码工作到目前为止! – rayryeng

回答

2

viscircles默认情况下将刷新该图并只绘制由您提供的输入指定的圆圈,因此hold on将不起作用。

你可以做的是保持添加到您的数据中,以便在每次提示输入新数据时显示原始数据,然后显示一个新的圆圈。

因此,做这样的事情。假设你有一个函数调用getNewCenter返回一个新的中心,圆圈和颜色的大小,以及包含中心为它们的尺寸显示以及矩阵:

centers = []; 
sizes = []; % Matrices that contain the centers and sizes 

while true % Keep iterating... 

    [numberX, numberY, size, colorControl] = getNewCenter; % Get new center, size and colour 

    % Add to the data 
    centers = [centers; numberX numberY]; 
    sizes = [sizes; size]; 

    % Plot the circles 
    xlim([-0.1 10.1]); 
    ylim([-0.1 10.1]); 
    axis square; 
    artwork = viscircles(centers, sizes, 'Color', colorControl); 
end